Я пытаюсь получить документ один за другим ... я использую приведенный ниже код своей работы, но в консоли он показывает мне ошибку, например StreamBuilderBaseState> # de08b): «Документы» получателя были вызваны с нулевым значением. Получатель: ноль Пытался вызвать: документы
new StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection("Quiz").where("topice",isEqualTo: widget.topic).where("section",isEqualTo: widget.section).snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot,) {
int length= snapshot.data.documents.length;
if (!snapshot.hasData)
return new Container(child: Text(""),);
return ListView(
children: <Widget>[
Text(widget.scoren.toString()),
Text(snapshot.data.documents[cunter]["Description"]),
Row(
children: <Widget>[
CupertinoButton(child: Text("COMMENTS"), onPressed: null),
RaisedButton(onPressed: (){
setState(() {
cunter++;
});
// Navigator.of(context).push(new MaterialPageRoute(builder: (context)=>new MyApp()));
},child: Text("NEXT"),)
],
)
],
)





Вы пытаетесь получить доступ к свойству длины списка документов, прежде чем проверять, есть ли в моментальном снимке какие-либо данные.
Попробуйте инвертировать эти строки, как это
//Check if the snapshot has data
if (!snapshot.hasData) return Container(child: Text(""));
//If you get here it means you have data
int length= snapshot.data.documents.length;
Также помните, что в Dart 2 keyworkd new больше не нужен.
Вы пытались создать карту документов, например «snapshot.data.documents.map <List>», и сохранить данные в переменной, а затем вернуть виджет. Я думаю, что проблема в строке "документы [cunter] [" Описание "]" Я не могу сегодня протестировать это, буду держать в курсе, если найду решение. Но сначала попробуйте разделить свой код, не возвращая ListView непосредственно в StreamBuilder, а используя функцию для возврата виджета.