В моем приложении для флаттера я использую базу данных firebase для аутентификации и базы данных firestore.Я также пытаюсь следовать шаблону BLOC.
После успешного входа в систему мне нужно построить экран пользовательского интерфейса, используя некоторые данные, хранящиеся в документе:
@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 для создания пользовательского интерфейса, передающего uid для получения DocumentSnapshot.
Итак, вот мой вопрос: есть ли лучший подход для достижения этой цели и избежать вложения StreamBuilder внутри FutureBuilder?