firebase - 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
屏幕。
我想显示mypage
或mypagepro
屏蔽而不显示任何这样的红屏。检查用户状态时如何避免出现此红屏?
解决方案
您应该检查是否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();
}
});
}
}
}
推荐阅读
- python - 解码泡菜文件
- networking - 网络图的平均路径长度?
- python - 如何优化读取 Battery Staus 的 python 代码
- python - Scrapy - 控制流中的 LinkExtractor 以及为什么它不起作用
- java - Javalin,无法获取请求正文,除非直接从 HttpServlet
- html - 一些字体很棒的图标没有显示
- python - 在 python 中为电报机器人创建良好的数据库
- java - 如何使用 Oracle 12c 数据库配置 Jasper 服务器
- android - 弹出软键盘时保持视图组可见
- node.js - 如何修复“错误:找不到 Python 可执行文件“python”,您可以设置 PYTHON 环境变量。” ubuntu nodejs npm