[英]Flutter: type 'List<Widget>' is not a subtype of type 'Widget'
[英]Flutter GridView “type 'List<Widget> is not a subtype of type Widget”
感覺就像我在做一些不尋常的事情!
我在 firebase firestore 的 1 個集合中有 2 個子 collections(subColl1 和 subColl2)。 我可以通過 CollectionGroup 訪問它們
children: [
FutureBuilder<List<dynamic>>(
//<QuerySnapshot>(
future: Future.wait([
FirebaseFirestore.instance.collectionGroup('subColl1').get(),
FirebaseFirestore.instance.collectionGroup('subColl2').get(),
]),
現在我想在這里將 collections 顯示為GridView.count()
:
return GridView.count(
restorationId: 'dashboardGridView',
crossAxisCount: 2,
mainAxisSpacing: 8,
crossAxisSpacing: 8,
padding: const EdgeInsets.all(8),
childAspectRatio: 1,
children: <Widget>[
snapshot.data[0].docs.map<Widget>((document) {
return _DashboardGridViewItem(
document: document,
);
}).toList(),
snapshot.data[1].docs.map<Widget>((document) {
return _DashboardGridViewItem(
document: document,
);
}).toList(),
],
);
我分別嘗試了snapshot.data[0]....
和snapshot.data[1]....
並且他們工作了。 但是像上面那樣做(同時)會拋出一個錯誤type 'List<Widget>' is not a subtype of type 'Widget'
我理解錯誤,但必須有辦法在同一個 gridview 中顯示兩個 collections ...
您會注意到我將一個文檔傳遞給了一個私有方法_DashboardGridViewItem(document: document)
,該方法用於顯示來自文檔的信息。 我在想的另一種方法是使用圍繞 gridview 的 for 循環,並在snapshot.data[i].....
但是我沒有返回 2 個 Gridview 嗎???
需要方向。。
它期待一個 [Widget, Widget, Widget..],你卻給了 [[Widgets], [Widgets]]
最簡單的解決方法是使用擴展運算符“...”,如下所示:
children: <Widget>[
...snapshot.data[0].docs.map<Widget>((document) {
return _DashboardGridViewItem(
document: document,
);
}).toList(),
...snapshot.data[1].docs.map<Widget>((document) {
return _DashboardGridViewItem(
document: document,
);
}).toList(),
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.