引发ProviderNotFoundException

时间:2020-07-27 14:43:13

标签: flutter dart provider

这是我正在使用的代码

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: 错误:在此包装器小部件上方找不到正确的提供者 发生这种情况的可能是因为您使用的BuildContext不包含提供者 你的选择。有几种常见情况:

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

1 个答案:

答案 0 :(得分:0)

您需要在包装器上方的小部件中的某个位置提供User对象

类似这样的东西:

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

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