【问题标题】:Load Firestore document first in Flutter在 Flutter 中首先加载 Firestore 文档
【发布时间】:2019-12-09 08:38:55
【问题描述】:

提前致谢!

Flutter & Firestore

我正在检查用户是否是管理员。我有一个集合'用户',其中:一个布尔:管理员:真或假。如果是真的,它会显示管理屏幕。否则它会显示主屏幕。

问题:前 1 秒我得到了这个屏幕。 (见屏幕截图,只有 1 秒可见)当应用从 Firestore 获取数据时,是否可以选择使用加载指示器。

我尝试添加 if (currentUser.admin == null) {} 但这不起作用。

User currentUser; 
//I made a separate modal document 

@override
  void initState() {
    super.initState();
    pageController = PageController(initialPage: 0);
    getUser();
  } 

 getUser() async {
    final FirebaseUser user = await FirebaseAuth.instance.currentUser();
    DocumentSnapshot doc =
        await Firestore.instance.collection("users").document(user.uid).get();

    setState(() {
      currentUser = User.fromDocument(doc);
    });

    print(currentUser.admin);
  }



@override
  Widget build(BuildContext context) {
    if (currentUser.admin == true) {
      return AdminScreen(
        currentUser: currentUser,
      );
    } else {
      return mainScreen();
    }
  }
}

Screenshot

更新:试过这个: getUser() 异步 { 最终 FirebaseUser 用户 = 等待 FirebaseAuth.instance.currentUser(); 文档快照文档 = await Firestore.instance.collection("users").document(user.uid).get();

if (doc.exists) {
  try {
    setState(() {
      currentUser = User.fromDocument(doc);
    });
  } catch (e) {
    print(e);
  }
}

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    找到了!

    对于任何有同样问题的人。 这就是问题所在: if (currentUser.admin == true)

    应该是:if (currentUser == null) 或 if (currentUser != null)

    它不适用于 currentUser.xxxx

    【讨论】:

      【解决方案2】:

      你也可以这样做

      Firestore.instance
              .collection('driverListedRides')
              .getDocuments()
              .then((QuerySnapshot snapshot) => {
                    snapshot.documents.forEach((f) {
                      String _variableName = f.data["YourCollectionFieldId"];
                    })
                  });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-06
        • 2020-06-13
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 2019-07-27
        相关资源
        最近更新 更多