Я пытаюсь прочитать данные из базы данных Firebase FireStore и отобразить их в виде списка в приложении флаттера.
Я столкнулся с этой проблемой, когда мне нужно сделать StreamBuilder частью массива виджетов.Если виджет StreamBuilder является единственным дочерним элементом виджета, он отображается нормально.Но если он является частью массива дочерних виджетов, он не работает.Например,
Ниже представлен мой виджет, который использует StreamBuilder
Widget postsListWidget = new StreamBuilder(
stream: Firestore.instance.collection('baby').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text('Loading...');
return new ListView.builder(
itemCount: snapshot.data.documents.length,
padding: const EdgeInsets.only(top: 10.0),
itemExtent: 55.0,
itemBuilder: (context, index) =>
_buildListItem(context, snapshot.data.documents[index]),
);
});
Здесь я использую виджет StreamBuilder с одним родительским дочерним элементом, например, Контейнер
return new Scaffold(
body: new Container(
child: postsListWidget,
)
Приведенный выше код будет работать правильно, потому что Container имеет только один дочерний элемент.
Однако, если я использую другой виджет, который может иметь более одного дочернего элемента, например, Row, StreamBuilder не будет отображаться.например,
return new Scaffold(
body: new Row(
children: <Widget>[postsListWidget],
)
Приведенный выше код не отображает виджет StreamBuilder.
В моем окне отладки появляются следующие ошибки
flutter: Another exception was thrown: RenderBox was not laid out: RenderViewport#9162d NEEDS-LAYOUT NEEDS-PAINT
flutter: Another exception was thrown: RenderBox was not laid out: RenderViewport#9162d NEEDS-PAINT
flutter: Another exception was thrown: Tried to paint a RenderObject reentrantly.
flutter: Another exception was thrown: 'package:flutter/src/widgets/text.dart': Failed assertion: line 213 pos 15: 'data != null': is not true.
flutter: Another exception was thrown: Tried to paint a RenderObject reentrantly.
Буду признателен, если кто-томожет помочь, я просто не могу найти Google, чтобы помочь в этом !!