gpt4 book ai didi

flutter - 从init方法将上下文传递给Provider时,Flutter引发错误

转载 作者:行者123 更新时间:2023-12-03 03:58:41 29 4
gpt4 key购买 nike

我有以下方法的MainScreen(有状态):

@override
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) async {
loadFirebaseUser(context);
});
}

我的“loadFirebaseUser”方法位于另一个名为Constants.dart的文件中,该文件可以在任何屏幕上使用。
功能如下:
Future<bool> loadFirebaseUser(BuildContext context) async {
Auth _auth = Auth();
FirebaseUser cUser = await _auth.currentUser();
if (cUser.isEmailVerified) {
DocumentSnapshot snapshot = await Firestore.instance
.collection('Profile')
.document(cUser.uid)
.get();
if (snapshot.data != null) {
User user = Provider.of<UserData>(context).getUser();
user = User.fromMap(snapshot);
Provider.of<UserData>(context).setUser(user);
return true;
} else {
return false;
}
}
return false;
}

执行以下代码时出现以下错误:
Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe.

不用说,这样做的结果是不会给用户带来负担。错误指向以下行:
User user = Provider.of<UserData>(context).getUser();

我希望'loadFirebaseUSer'函数自动执行,而不是单击任何按钮,因此这是我知道的唯一放置此代码的地方。有没有办法实现这一目标?谢谢

最佳答案

您是否尝试过以这种方式获取背景信息?

Future.delayed(Duration.zero, () {
var myState = Provider.of<MyState>(context);
.......
});

关于flutter - 从init方法将上下文传递给Provider时,Flutter引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919053/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com