我需要改变主题使用状态提供者的Flutter 河舱,我不明白我做错了什么
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final isDarkTheme = ref.watch(isDarkThemeProvider.notifier).state;
return GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
},
child: ScreenUtilInit(
designSize: const Size(360, 690),
minTextAdapt: true,
splitScreenMode: true,
builder: (context, child) {
return MaterialApp(
builder: FToastBuilder(),
debugShowCheckedModeBanner: false,
title: 'code',
theme: isDarkTheme ? Themes().darkTheme : Themes().lightTheme,
onGenerateRoute: onAppGenerateRoute(),
routes: appRoutes(),
initialRoute: SplashPage.route);
},
),
);
}
}
这是我的主题类和主题状态提供程序
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:tr_qr_code/utils/colors.dart';
class Themes {
final ThemeData lightTheme = ThemeData(
scaffoldBackgroundColor: colorWhite,
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
appBarTheme: const AppBarTheme(color: colorWhite),
fontFamily: 'OpenSans',
useMaterial3: true,
);
final ThemeData darkTheme = ThemeData(
scaffoldBackgroundColor: colorBlack,
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
appBarTheme: const AppBarTheme(color: colorBlack),
fontFamily: 'OpenSans',
useMaterial3: true,
);
}
final isDarkThemeProvider = StateProvider<bool>((ref) => false);
在ONTAP内的拨动switch 上,使用以下代码来更新状态
onTap: () {
ref.read(isDarkThemeProvider.notifier).update(
(state) => !ref.read(isDarkThemeProvider.notifier).state);
},
我try 了Flutter 翼清洁,Flutter 翼wine 吧升级等.