【问题标题】:context provided but throws error Could not find the correct Provider<Data> above this MyApp Widget Flutter提供了上下文但抛出错误在这个 MyApp Widget Flutter 上方找不到正确的 Provider<Data>
【发布时间】:2021-09-15 10:18:42
【问题描述】:

我正在使用提供程序进行状态管理。 状态变量适用于其他小部件。 但是当我在 materialApp 中使用状态变量作为主题时,这会引发错误(也重新启动)。 还声明提供者在树的高处。

    void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<Data>(
      create: (context) => Data(),
      child: MaterialApp(
        theme: Provider.of<Data>(context).current,
        home: Page1(),
        debugShowCheckedModeBanner: false,
      ),
    );
  }}

数据类:

class Data extends ChangeNotifier {
  String school = "xyz";
  String name = "samuel";
  int age = 123;
  int val = 0;
  String userinput = "";
  ThemeData current = ThemeData.dark();
  void increment() {
    val++;
    notifyListeners();
  }

  void display(String char) {
    userinput = char;
    notifyListeners();
  }
}

【问题讨论】:

    标签: flutter flutter-layout flutter-provider


    【解决方案1】:

    实际上当你使用上下文时,而不是这个使用this.context。这将采用成员变量上下文,而不是上面在 creare 参数下写为 'context' 的行。

    【讨论】:

      【解决方案2】:
      void main(){
        runApp(ChangeNotifierProvider<Data>(
            create: (context) => Data(),
            child: MyApp(),
          ),);
      }
      
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return Consumer<Data>(
            builder: (context, appState, child) {
              return MaterialApp(
                theme: Provider.of<Data>(context).current,
                debugShowCheckedModeBanner: false,
                home: Page1(),
              );
            },
          );
        }
      }
      

      将您的材料应用程序与消费者一起包装并尝试此代码一次。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2021-09-29
        • 2021-07-23
        • 2021-12-19
        • 2021-04-29
        • 2020-11-28
        • 2021-01-13
        • 2021-11-16
        • 2021-07-16
        相关资源
        最近更新 更多