Navigator.push(): Error: Could not find the correct Provider above this Consumer Widget

Navigator.push(): Error: Could not find the correct Provider above this Consumer Widget

我正在尝试在我的 Flutter 应用程序中实现一些基本的状态管理。在小部件树的某处,我有一个用户的提供者。进一步向下的小部件可以使用消费者用户小部件访问用户。但是,一个小部件(下面代码片段中的小部件 B)是使用 Navigator.push() 构建的,无法访问用户。按下按钮将抛出错误:

Error: Could not find the correct Provider above this Consumer Widget

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)中访问用户?

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