首页 > 解决方案 > flutter:future builder造成的红屏

问题描述

我的 flutter-firebase 应用程序首先检查用户的状态。如果用户是专业人士,mypagepro屏幕将显示,否则mypage将显示。这是我的代码。

@override
Widget build(BuildContext context) {
  return FutureBuilder(
      future: FirebaseFirestore.instance
          .collection('crews')
          .doc(user.uid)
          .get(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.data['isPro'] == true) {
          return MyPagePro();
        } else {
          return MyPage();
        }
      });
    }
  }
}

mypage问题是在最终显示或屏幕之前检查用户状态需要很长时间才能显示红色mypagepro屏幕。

在此处输入图像描述

我想显示mypagemypagepro屏蔽而不显示任何这样的红屏。检查用户状态时如何避免出现此红屏?

标签: firebaseflutterfuturebuilder

解决方案


您应该检查是否snapshot有数据。

尝试这个:

@override
Widget build(BuildContext context) {
  return FutureBuilder(
      future: FirebaseFirestore.instance
          .collection('crews')
          .doc(user.uid)
          .get(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.hasData && snapshot.data['isPro'] == true) {
          return MyPagePro();
        } else {
          return MyPage();
        }
      });
    }
  }
}

推荐阅读