【问题标题】:how do i use provider in this situation在这种情况下如何使用提供程序
【发布时间】:2021-08-20 10:50:12
【问题描述】:

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

(突出显示的代码)

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

【问题讨论】:

    标签: flutter flutter-provider flutter-theme


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      runApp(ChangeNotifierProvider(
      
          create: (context) => ThemeProvider(),
          child:MyApp()
      
      );
      

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2022-07-31
        • 2022-01-23
        • 2015-11-30
        • 2017-05-16
        • 2012-10-06
        • 2011-05-18
        • 2019-11-29
        • 2022-01-23
        • 2018-05-20
        相关资源
        最近更新 更多