在这种情况下我如何使用提供程序

时间:2021-06-02 09:23:20

标签: flutter flutter-provider flutter-theme

我想创建一个更改应用程序主题模式,我看到了一种使用 Provider 创建它的方法,但我是 Provider 的新手。例如,我想添加一些这样的代码

highlight code(突出显示的代码)

在我的主要由许多路线组成

my main

2 个答案:

答案 0 :(得分:1)

您想更改应用程序的主题,然后您需要将提供程序向上移动,以便它可以覆盖小部件(在这种情况下为应用程序)状态, 你可以在你的主要方法中做这样的事情:

runApp(ChangeNotifierProvider(

    create: (context) => ThemeProvider(),
    child:MyApp()

);

现在对于孩子,您可以像这样在构建方法中简单地调用提供者

Widget build(){
   var themeProvider = Provider.of<ThemeProvider>(context);
}

或者您可以使用消费者小部件

Consumer<ThemeProvider>(
builder: (context, provider, child) {
//return something
}

)

答案 1 :(得分:1)

我建议您将 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,
     ... 
   );
  }
)