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(),
],
感觉自己在做一件与众不同的事情!
我在 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(),
],