【发布时间】:2021-08-20 10:50:12
【问题描述】:
【问题讨论】:
标签: flutter flutter-provider flutter-theme
【问题讨论】:
标签: flutter flutter-provider flutter-theme
我建议你将你的 ChangeNotifierProvider 移动到你的 runApp() 方法
runApp(
ChangeNotifierProvider<ThemeProvider>(
create: (_) => ThemeProvider(),
child: MyApp(),
),
),
您的MyApp() 只是将您的所有应用提取到其自己的小部件中。
然后,您实际上可以在 build 方法上使用 Consumer 小部件轻松访问它。
return Consumer<ThemeProvider>(
builder: (BuildContext context, ThemeProvider provider, _) {
return MaterialApp(
theme: provider.myTheme,
...
);
}
)
【讨论】:
您想更改应用程序的主题,然后您需要将提供程序向上移动,以便它可以覆盖小部件(在本例中为应用程序)状态, 你可以在你的主要方法中做这样的事情:
runApp(ChangeNotifierProvider(
create: (context) => ThemeProvider(),
child:MyApp()
);
现在对于孩子,您可以像这样在构建方法中简单地调用提供者
Widget build(){
var themeProvider = Provider.of<ThemeProvider>(context);
}
或者你可以使用消费者小部件
Consumer<ThemeProvider>(
builder: (context, provider, child) {
//return something
}
)
【讨论】: