【问题标题】:Navigator.push(): Error: Could not find the correct Provider above this Consumer WidgetNavigator.push():错误:在此消费者小部件上方找不到正确的提供者
【发布时间】:2020-05-19 14:21:40
【问题描述】:

我试图在我的 Flutter 应用中实现一些基本的状态管理。在小部件树的某个地方,我有一个用户提供者。更下方的小部件可以使用消费者用户小部件访问用户。但是,使用 Navigator.push() 构建了一个小部件(以下代码中的 WidgetB)并且无法访问用户。按下按钮会抛出错误:

错误:在此上方找不到正确的提供程序 消费者小部件

floatingActionButton: FloatingActionButton(
          child: Icon(Icons.play),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => Consumer<User>(
                  builder: (context, user, child) => WidgetB(user: user),
                ),
              ),
            );
          },
        ),

如何在 WidgetB(或 WidgetB 的某个子 Widget)中访问用户?

【问题讨论】:

    标签: flutter flutter-state


    【解决方案1】:

    确保您的提供程序设置在 MaterialApp 级别。例如,像这样:

    void main() {
      runApp(MultiProvider(
        providers: [
          ChangeNotifierProvider(
            create: (_) => Provider1(),
          ),
          ChangeNotifierProvider(
            create: (_) => Provider2(),
          ),
        ],
        child: MyApp(),
      ));
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: MainPage(),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 2020-08-09
      • 2020-08-04
      • 2020-09-18
      • 2019-11-29
      • 2021-11-11
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多