从 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 initStategetUserData(user); 执行之前执行,它不是随机值。

为此,您可以在 initState 中使用 getUserData.then() 方法,然后您可以获得正确的值或设置变量。

示例:

getUserData.then((String value) {
  print(value);
}).catchError((e) {
  return 499;
});