从 FirebaseFirestore 获取数据时字符串值发生变化
String value changes when getting data from FirebaseFirestore
所以我试图从我的 Firebase Firestore 获取数据,但它的值随机变化。在方法 getUserData 中,它是它应该是的,但是当调用 initState() 时,该值再次设置为默认值。我是 flutter 的新手,所以我不知道如何解决它。
String email = '';
String username = '';
Future<void> getUserData(User user) async {
username = await FirebaseFirestore.instance
.collection('users_info')
.doc(user.uid)
.get()
.then((value) {
return value['username'];
});
print(username);
}
@override
void initState() {
User user = FirebaseAuth.instance.currentUser!;
email = user.email!;
getUserData(user);
print(username);
super.initState();
}
I/flutter (15550): I/flutter (15550): Kiaule5
print(username)
in initState
在 getUserData(user);
执行之前执行,它不是随机值。
为此,您可以在 initState
中使用 getUserData.then()
方法,然后您可以获得正确的值或设置变量。
示例:
getUserData.then((String value) {
print(value);
}).catchError((e) {
return 499;
});
所以我试图从我的 Firebase Firestore 获取数据,但它的值随机变化。在方法 getUserData 中,它是它应该是的,但是当调用 initState() 时,该值再次设置为默认值。我是 flutter 的新手,所以我不知道如何解决它。
String email = '';
String username = '';
Future<void> getUserData(User user) async {
username = await FirebaseFirestore.instance
.collection('users_info')
.doc(user.uid)
.get()
.then((value) {
return value['username'];
});
print(username);
}
@override
void initState() {
User user = FirebaseAuth.instance.currentUser!;
email = user.email!;
getUserData(user);
print(username);
super.initState();
}
I/flutter (15550): I/flutter (15550): Kiaule5
print(username)
in initState
在 getUserData(user);
执行之前执行,它不是随机值。
为此,您可以在 initState
中使用 getUserData.then()
方法,然后您可以获得正确的值或设置变量。
示例:
getUserData.then((String value) {
print(value);
}).catchError((e) {
return 499;
});