Sat*_*dey 11 dart firebase flutter google-cloud-firestore
尝试初始化数据时得到这个。
构建 UserProfile(dirty, state: _UserProfileState#752a9): LateInitializationError: Field '_userData@32329253' has not been initialized 时抛出了以下 LateError 错误。”
这是代码:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
构建函数甚至没有运行,因为我试图打印 _user 和 _userData 以检查它们是否已被初始化。
如果我尝试在 initUser() 函数中打印 _user 和 _userData,则会在错误语句之后打印 _user 和 _userData。
请帮助我找到解决此错误的方法。
Pet*_*dad 15
即使您在 内部初始化这些变量initUser(),但如果您在方法内部使用这些变量,您也会收到此错误,build()因为initUser()它是异步的,这意味着从集合中获取数据需要时间。为了解决这个问题,你可以这样做:
@override
void initState() {
super.initState();
_initUser().whenComplete((){
setState(() {});
});
}
Run Code Online (Sandbox Code Playgroud)
这将使用新值重建小部件树。
K.A*_*nov 12
就我而言,我在使用easy_localization. 我忘了:
await EasyLocalization.ensureInitialized();
Run Code Online (Sandbox Code Playgroud)
在 main.dart 文件上。
PS我知道这不是这个问题的答案,我是为像我这样面临这个问题的人写的。