4

我试图在我的 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)中的用户?

4

1 回答 1

8

确保您的提供程序设置在 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(),
    );
  }
}
于 2020-02-03T22:43:41.613 回答