我想创建一个更改应用程序主题模式,我看到了一种使用 Provider 创建它的方法,但我是 Provider 的新手。例如,我想添加一些这样的代码
在我的主要由许多路线组成
您想更改应用程序的主题,然后需要将提供程序向上移动,以便它可以覆盖小部件(在这种情况下为应用程序)状态,您可以在 main 方法中执行以下操作:
runApp(ChangeNotifierProvider(
create: (context) => ThemeProvider(),
child:MyApp()
);
现在对于孩子,您可以像这样在构建方法中简单地调用提供者
Widget build(){
var themeProvider = Provider.of<ThemeProvider>(context);
}
或者你可以使用消费者小部件
Consumer<ThemeProvider>(
builder: (context, provider, child) {
//return something
}
)
我建议你移动你ChangeNotifierProvider
的runApp()
方法
runApp(
ChangeNotifierProvider<ThemeProvider>(
create: (_) => ThemeProvider(),
child: MyApp(),
),
),
您MyApp()
只是将所有应用程序提取到其自己的小部件的位置。
然后,您实际上可以使用方法Consumer
上的小部件轻松访问它build
。
return Consumer<ThemeProvider>(
builder: (BuildContext context, ThemeProvider provider, _) {
return MaterialApp(
theme: provider.myTheme,
...
);
}
)