Flutter GridView.builder как сделать так, чтобы не отображался ненужный контейнер?

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

Используемый код в 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])))
 )
→ Ссылка