Flutter GridView.builder как сделать так, чтобы не отображался ненужный контейнер?
Выполняется проверка категорий продуктов с нужной категорией, если проверка завершилась успешно, то возвращаю карточку с продуктом. Вот тут и появилась проблема, если не выполнилась проверка, то нужно обязательно вернуть какой-то виджет, я возвращаю Container(), но я не хочу, чтоб он занимал место в сетке. Как это исправить?

Используемый код в builder:
itemBuilder: (context, index) {
if (products[index].category == category_name) {
return GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsProductScreen(
product: products[index])));
},
child: ProductCard(product: products[index]),
);}
return Container();
}
Ответы (1 шт):
Автор решения: Kerim
→ Ссылка
Для того, чтобы продукт не появился в сетке - нужно, чтобы его не существовало. Делаем простую фильтрацию до билд функции
var filteredProducts = products.where((prod) => prod.category == category_name);
Далее используем новый фильтрованный список для сетки
GridView.builder(itemCount: filteredProducts.length,
itemBuilder: (context, index) => GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsProductScreen(
product: filteredProducts[index])))
)