簡體   English   中英

Flutter GridView“類型”列表<widget>不是 Widget 類型的子類型”</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM