首页 > 解决方案 > 如何比较体内数据库中的值并使用三元条件进一步进行

问题描述

我正在从 firestore 数据库中获取值,并显示与用户相关的所有详细信息,但是当我尝试在正文中添加下面提到的条件时,它不起作用。我想要的是如果用户为空,则将用户移动到启动屏幕,如果它不为空,则要检查状态,如果它被“阻止”,那么我希望用户转到阻止屏幕,否则主屏幕带有底部标签。但我不知道为什么它不起作用。这是带有底部选项卡的主屏幕,在此我试图比较这样的值,但我认为正确的值没有出现在这里。

 body: currentUser == null ?
            Center(child: Splash())
                :currentUser.userStatus == 'isBlocked'
                ? BlockUser():
            Center(
              child: Container(),

如果像这样放 != 符号,那么它就可以工作。

body: currentUser == null ?
            Center(child: Splash())
                :currentUser.userStatus != 'isBlocked'
                ? BlockUser():
            Center(
              child: Container(),

我以这种方式获取值,它显示了与用户相关的所有数据:-

CreateAccountData currentUser;

void initState() {
    super.initState();

    _getCurrentUser();
    _getMatches();

    getUser().then((value) {
      currentUser = value;
      userStatus = value.userStatus;
      
    });

  }

Future<CreateAccountData> getUser() async {
    final User user = auth.currentUser;
    return docRef.doc(user.uid).get().then((m) => CreateAccountData.fromDocument(m));

  }

标签: flutterdart

解决方案


我认为 Builder 应该在这里工作得最好

body: Builder(
    builder: (BuildContext context) {
     if(currentUser == null){
       return Center(child: Splash())
     }
     if(currentUser.userStatus == 'isBlocked'){
       return BlockUser();
     }

     return Center(child: Container();

   },
),

https://api.flutter.dev/flutter/widgets/Builder-class.html


推荐阅读