Я искал похожие ответы и безуспешно пытался использовать предложенные ими решения. Я пытаюсь создать ListView с данными из Firestore. Каждый раз, когда я пытаюсь запустить его, он выдает мне «Тип« Список »не является подтипом типа« Виджет »».
Заранее спасибо!
Вот два блока кода, связанные с ошибкой:
class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection("exercises").snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return new Text("There is no expense");
return new Scaffold(
backgroundColor: Colors.blue[100],
appBar: AppBar(
title: Text('Test'),
backgroundColor: Colors.blue[400],
elevation: 0.0,
),
body: Column(
children: <Widget>[
ListView(
shrinkWrap: true,
padding: EdgeInsets.all(0),
children: <Widget>[getExpenseItems(snapshot)]
)
],
),
);
});
}
getExpenseItems(AsyncSnapshot<QuerySnapshot> snapshot) {
return snapshot.data.documents.map<Widget>((doc) =>
new Container(
child: Card(
child: ListTile(
title: new Text(doc["nome"]),
subtitle: new Text(doc["link"])
),
),
)
).toList();
}
Клянусь, я несколько раз пытался удалить и добавить <Widget> тут и там. Не могу поверить, что я не пытался удалить это. Спасибо!
Выкладываем возвращенный список виджетов из getExpenseItems(snapshot)
:
body: Column(
children: <Widget>[
ListView(
shrinkWrap: true,
padding: EdgeInsets.all(0),
children: <Widget>[...getExpenseItems(snapshot)]
)
],
),
//....
Очень признателен! Я пытался добавить и удалить <Widget> из нескольких мест, но, думаю, я не пробовал этого. ~
Рад, что это помогло. Я не добавил подробного объяснения, так как это кажется очень тривиальным вопросом. Надеюсь, вы поняли причину использования операции распространения на getExpenseItems(snapshot)
замените <Widget>[getExpenseItems(snapshot)] на getExpenseItems(snapshot)