Flutter if 语句不起作用

Flutter if statement not functioning

这应该是一个简单的问题,但我已经被困了几个小时。

情况:如果用户未被授权,我正在尝试执行 signOutProcess 以注销 Firebase。我在 Firestore 中设置了一个字段,1 表示已授权,0 表示未授权。它打印出正确的结果,如果我删除 if 语句,我可以让它退出,但这违背了目的。

问题:如何让 if 语句在检索嵌套值时执行 signOutProcess

  void getUserAuthorization  () {
    String uid = firebaseAuth.currentUser!.uid;
    print('this is uid $uid');
      FirebaseFirestore.instance
        .collection('Users2022')
        .doc(uid)
        .get()
        .then((DocumentSnapshot documentSnapshot) async {
      dynamic nested = documentSnapshot.get(FieldPath(['Authorized']));
        print('this is the authorization condition $nested');
        if (nested == 0) {
          signOutProcess();
        }
    });
  }

您得到的值可能是 '0' 而不是 0,即它是一个 字符串 !

它不会等于数字 0 那么你必须写成 if (nested == '0').

您可以尝试 print(nested.runtimeType) 看看您实际得到了什么。