Привет, ребята, так что я использовал флаттер для создания приложения, и есть функция, где пользователи могут выбрать категорию, а затем с помощью firetstore запросить службы в этой категории, вот так выглядит моя структура документа
Я использовал поле categoryIndex, чтобы указать определенную категорию в этом примере. 1 Для сервисов Банков это мой код флаттера (виджет, где он отображает сервис в указанных категориях)
// this is responsible for the integer current index
List<String> services = ["Universities", "Government", "Bills/Banks"];
List<Widget> _buildServiceCat(num currentIndex) {
return services.map((service) {
var index = services.indexOf(service);
_isSelected = _currentIndex == index;
return Padding(
padding: EdgeInsets.only(left: 25, right: 5),
child: GestureDetector(
onTap: () async {
setState(() {
_currentIndex = index;
});
},
child: Text(
service,
style: TextStyle(
color: _isSelected ? Colors.white : Colors.white70,
fontSize: _isSelected ? 20 : 18,
fontWeight:
_isSelected ? FontWeight.bold : FontWeight.normal),
)));
}).toList();
}
// then using GridView builder it will call a method in my serviceDatabase to query
the needed documents
Expanded(
child: SizedBox(
height: 500.0,
child: GridView.builder(
physics: ScrollPhysics(),
itemCount: services.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemBuilder: (context, index) {
print('called $_currentIndex');
return StreamProvider<List<Service>>.value(
value: ServiceDatabase(categoryIndex: _currentIndex)
.service,
child: ServiceTile(service: services[index]),
);
},
)),
)
// the query using where to find the given categoryIndex
Stream<List<Service>> get service {
return serviceCollection
.where("categoryIndex", isEqualTo: categoryIndex )
.snapshots()
.map(_serviceListFromSnapshot);
}
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: я ожидаю, что список услуг изменится, если, например, я нажму на правительства, он покажет службы с указанным индексом.
ИТОГО:
Будет загружен индекс по умолчанию (0 ) затем, если я нажму на другие службы, список не изменится.
Извините за длинный пост, но я застрял на некоторое время и я не знаю, что заставляет его терпеть неудачу. Если у вас, ребята, есть несколько лучших советов о том, как сделать sh, это поразит меня! Заранее спасибо!