【发布时间】:2019-05-17 21:41:07
【问题描述】:
在我的颤振应用程序中,我使用 firebase 进行身份验证和 firestore 数据库。我也在尝试遵循 BLOC 模式。
成功登录后,我需要使用存储在文档中的一些数据来构建我的 UI 屏幕:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Auth.of(context).firebase.uid(),
builder: (context, snap){
if(snap.hasData) {
print("Your uid is ${snap.data}");
return StreamBuilder(
stream: Firestore.instance.collection('USERS').document(snap.data).collection('PHOTOS').document(
widget.photoID).snapshots(),
builder: (context, AsyncSnapshot<DocumentSnapshot> snap) {...}
现在,一切正常。
Auth 是 Firebase Auth 扩展 InheritedWidget 的包装类,其中 .uid() 方法返回带有用户标识符的 Future。 然后我使用 StreamBuilder 构建 UI,通过 uid 获取 DocumentSnapshot。
所以这是我的问题:是否有更好的方法来实现这一点并避免将 StreamBuilder 嵌套在 FutureBuilder 中?
【问题讨论】:
-
我推荐本教程以获得将 Firebase 身份验证与 Bloc/Cubit 集成的最佳和最简洁的方法 flutter-developer.medium.com/…
标签: firebase dart flutter google-cloud-firestore bloc