gpt4 book ai didi

firebase - 延迟初始化错误 : Field '_userData@32329253' has not been initialized

转载 作者:行者123 更新时间:2023-12-04 04:32:01 25 4
gpt4 key购买 nike

尝试初始化数据时得到这个。

The following LateError was thrown building UserProfile(dirty, state: _UserProfileState#752a9):LateInitializationError: Field '_userData@32329253' has not been initialized."


这是代码:
    late final User _user;
late final DocumentSnapshot _userData;

@override
void initState() {
super.initState();
_initUser();
}

void _initUser() async {
_user = FirebaseAuth.instance.currentUser!;
try {
_userData = await FirebaseFirestore.instance
.collection('users')
.doc(_user.uid)
.get();
} catch (e) {
print("something went wrong");
}
}
构建函数甚至没有运行,因为我试图打印 _user 和 _userData 以检查它们是否已被初始化。
如果我尝试在 initUser() 函数中打印 _user 和 _userData,则会在错误语句之后打印 _user 和 _userData 。
请帮助我找到解决此错误的方法。

最佳答案

即使您在 initUser() 中初始化这些变量,但如果您使用 build() 中的变量,则会出现此错误。方法自 initUser()是异步的,这意味着从集合中获取数据需要时间。要解决此问题,您可以执行以下操作:

@override
void initState() {
super.initState();
_initUser().whenComplete((){
setState(() {});
});
}
这将使用新值重建小部件树。

关于firebase - 延迟初始化错误 : Field '_userData@32329253' has not been initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66734015/

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