Метод getIngredients (), приведенный ниже, возвращает список из firestore.
Future getIngredients() async {
return Firestore.instance
.collection('ingredients')
.where("name", isEqualTo: widget.dish_name.toString().toLowerCase()).getDocuments();
}
Теперь я хочу отобразить этот список в конструкторе элементов ниже:
new ListView.builder(
itemExtent: 90,
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return SingleIngredient(
ingredient_name: snapshot.data[index].ingredients,
);
});
Я получаю следующее сообщение об ошибке:
_FutureBuilderState # 7cbda): I / flutter (12164): класс 'QuerySnapshot' не имеет экземпляра getter 'length'.I / flutter (12164): получатель: экземпляр 'QuerySnapshot' I / flutter (12164): пробный вызов: длина
Вот схема моего пожарного депо.Я получаю список ингредиентов:
ОБНОВЛЕНИЕ Я обновил код, но я толькополучить первый элемент из списка ингредиентов (например, лук).Я хочу, чтобы itembuilder создавал каждый элемент в списке, потому что я пытаюсь отобразить изображение и список ингредиентов.Это то, что делает виджет SingleIngredient.Итак, как я могу просмотреть каждый список по очереди?
Widget build(BuildContext context) {
return Container(
child: FutureBuilder(
future: getIngredients(),
builder: (context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot user = snapshot.data.documents[index];
return SingleIngredient(
// Access the fields as defined in FireStore
ingredient_name: user.data['ingredients'][index].toString(),
);
},
);
} else if (snapshot.connectionState == ConnectionState.done &&
!snapshot.hasData) {
// Handle no data
return Center(
child: Text("No users found."),
);
} else {
// Still loading
return CircularProgressIndicator();
}
}),
);
}
}