hi_provider.dart
管理 ChangeNotifier 集合
List<SingleChildWidget> topProviders = [
ChangeNotifierProvider(
create: (_) => ThemeProvider(),
)
];
main.dart
实现主题变更监听,ThemeProvider 每次调用 notifyListeners()
都会回调到Consumer 的 builder 方法,重新构建 Widget
MultiProvider(
providers: topProviders,
// 监听主题样式变更
child: Consumer<ThemeProvider>(builder:
(BuildContext context, ThemeProvider provider, Widget child) {
return MaterialApp(
home: widget,
theme: provider.getTheme(),
darkTheme: provider.getTheme(isDarkMode: true),
themeMode: provider.getThemeMode());
}))
login_page.dart
设置主题
context.read<ThemeProvider>().setTheme(ThemeMode.dark);