такое ощущение, что я делаю что-то из ряда вон выходящее!
У меня есть 2 подколлекции (subColl1 и subColl2) в 1 коллекции в firebase firestore. Я получаю к ним доступ с помощью 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'
Я понимаю ошибку, но должен быть способ отобразить обе коллекции в одном и том же сетке...
вы заметите, что я передаю документ приватному методу _DashboardGridViewItem(document: document)
, который используется для отображения информации из документа. Другой способ, которым я думал, - это использовать цикл for, окружающий gridview, и использовать индекс i внутри snapshot.data[i].....
, но тогда я не возвращаю 2 Gridview???
нужно направление..
Он ожидает [Виджет, Виджет, Виджет ..], вместо этого вы даете [[Виджеты], [Виджеты]]
Самый простой способ решения - использовать оператор спреда '...', как показано ниже:
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(),
],
Ты! ты хороший ты! интересно, как 3 точки решили все, лол....