【问题标题】:ProviderNotFoundException was thrownProviderNotFoundException 被抛出
【发布时间】:2020-11-16 22:15:07
【问题描述】:

这是我正在使用的代码

class Wrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
if (user == null) {
  return LoginPage();
} else {
  return MyHomePage();
}
}
}

并且用户文件有

class User {
final String uid;
User({this.uid});
}

我收到了这个错误:

在构建 Wrapper(dirty) 时引发了以下 ProviderNotFoundException: 错误:在此 Wrapper 小部件上方找不到正确的提供程序 这可能是因为您使用了不包含提供程序的BuildContext 你的选择。有几种常见的情况:

  • 您尝试读取的提供程序位于不同的路径中。 提供者是“范围内的”。因此,如果您在路由中插入提供程序,则其他路由将无法访问该提供程序。
  • 您使用了BuildContext,它是您尝试读取的提供程序的祖先。 确保 Wrapper 在您的 MultiProvider/Provider 下。 这通常发生在您创建提供程序并尝试立即读取它时。

【问题讨论】:

    标签: flutter dart provider


    【解决方案1】:

    您需要在 Wrapper 上方的小部件中的某处提供 User 对象

    类似这样的:

    Provider(
      create: (_) => User(),
      child: Wrapper()
    )
    

    https://pub.dev/documentation/provider/latest/

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2016-04-23
      • 2020-08-20
      • 1970-01-01
      相关资源
      最近更新 更多