【问题标题】:Could not find the correct provider above this MyApp widget在此 MyApp 小部件上方找不到正确的提供程序
【发布时间】:2021-01-13 01:07:40
【问题描述】:

我正在尝试使用MaterialApp 中的提供程序。我有一个MultiProvider,它是MaterialApp 的父级。

当我尝试访问提供程序时,我收到以下错误:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<RoutesProvider>(create: (context) => RoutesProvider()),
        ...
      ],
        child: MaterialApp(
          title: 'coolApp',
          // key: Provider.of<RoutesProvider>(context, listen: false).mainKey,
          initialRoute: '/home',
          routes: <String, WidgetBuilder>{...routes},
        ),
    );
  }
}

【问题讨论】:

    标签: flutter dart flutter-provider


    【解决方案1】:

    遵循以下结构,ChangeNotifierProvider.value 是分配提供者的正确方式

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MultiProvider(
          providers: [
            ChangeNotifierProvider.value(value: RoutesProvider()),
            //.....
          ],
          child: MaterialApp(
    

    【讨论】:

    • @Jessica:看来您是老 SO 用户,那么为什么您不赞成对您有帮助的答案。顺便说一句,这是一个很好的做法,不仅仅针对我的回答。
    猜你喜欢
    • 2019-11-29
    • 2021-11-18
    • 2021-07-22
    • 2021-11-11
    • 2020-12-01
    • 2020-08-04
    • 2020-09-18
    • 2021-07-23
    • 2020-07-26
    相关资源
    最近更新 更多