Navigator.push():错误:在此消费者小组件上方找不到正确的提供者

时间:2020-02-03 19:21:25

标签: flutter flutter-state

我正在尝试在Flutter应用中实施一些基本的状态管理。在小部件树的某个位置,我有一个供用户使用的提供程序。进一步向下的小部件可以使用“使用者用户小部件”访问用户。但是,使用Navigator.push()构建了一个Widget(下面代码中的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)中访问用户?

1 个答案:

答案 0 :(得分:5)

确保您的提供者设置在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(),
    );
  }
}