【问题标题】:Instance of 'Future<String?>' flutter\'Future<String?>\' flutter 实例
【发布时间】:2023-02-11 21:35:50
【问题描述】:

为什么返回“Future<String?>”实例而不是字符串值?

Future<String?> getUser() async {
    User user = await FirebaseAuth.instance.currentUser!;
    FirebaseFirestore firestore = await FirebaseFirestore.instance;
    String uid = user.uid;
    String? userName;

    // to get username from firebase
    return firestore
        .collection("users")
        .doc(uid)
        .get()
        .then((value) {
      if (value.exists) {
        var data = value.data();
        userName = data?["name"];
        print("There is data :$userName");
      } else {
        print("There no Data!");
      }
      return Future.value(userName);
    });
  }

我正在尝试获取字符串值?

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    这将是

      return await firestore.collection("users")....get()
    

    获取数据而不是未来。

    我也建议不要混合等待和.then

    Future<String?> getUser() async {
      User user = FirebaseAuth.instance.currentUser!;
      FirebaseFirestore firestore = FirebaseFirestore.instance;
      String uid = user.uid;
      String? userName;
    
      // to get username from firebase
      final value = await firestore.collection("users").doc(uid).get();
      if (value.exists) {
        var data = value.data();
        userName = data?["name"];
        print("There is data :$userName");
      } else {
        print("There no Data!");
      }
      return userName;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 2022-01-20
      • 2018-09-28
      • 1970-01-01
      • 2019-02-27
      • 2021-07-18
      相关资源
      最近更新 更多