【发布时间】: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 下。 这通常发生在您创建提供程序并尝试立即读取它时。
【问题讨论】: