Flutter GridView "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 个子集合(subColl1 和 subColl2)。 我可以通过 CollectionGroup

访问它们
children: [
          FutureBuilder<List<dynamic>>(
            //<QuerySnapshot>(
            future: Future.wait([
              FirebaseFirestore.instance.collectionGroup('subColl1').get(),
              FirebaseFirestore.instance.collectionGroup('subColl2').get(),
            ]),

现在我想在此处将两个集合显示到 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 中显示两个集合...

您会注意到我将文档传递给私有方法 _DashboardGridViewItem(document: document),该方法用于显示来自文档的信息。我想的另一种方法是在 gridview 周围使用 for 循环并在 snapshot.data[i]..... 中使用索引 i 但是我不返回 2 Gridviews 吗???

需要指导..

它期待的是 [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(),
                  ],