Я создал представление сетки, используя GridView.count() во флаттере.
Теперь, например, при запуске у меня есть 8 элементов в моем представлении сетки (максимум = 8). Я хочу удалить определенные ячейки из сетки на основе некоторого условия, которое пользователь выберет позже. У меня возникают проблемы с достижением этого, как если бы я заменил ячейку сетки пустым контейнером (динамически при проверке условия), он все еще происходит в сетке, в то время как я хочу, чтобы эта ячейка была полностью удалена (даже не происходит в GridView ). Есть ли способ добиться этого?
ИЗМЕНИТЬ
Вот код. Проверка условия находится в операторе возврата в строке №. 10.
Expanded(
child: GridView.count(
physics: BouncingScrollPhysics(),
scrollDirection: Axis.vertical,
crossAxisCount: 2,
childAspectRatio: 0.7,
children: new List<Widget>.generate(
category != null ? category.category.length : 0,
(index) {
return _lowerLimit < category.category.elementAt(index).price && _upperLimit > caregory.categoty.elementAt(index).price ?
GridTile(
child: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(3.0),
padding:
EdgeInsets.symmetric(vertical: 30.0),
color: Colors.white,
child: Hero(
tag: category.category
.elementAt(index)
.productId,
child: Material(
child: InkWell(
onTap: () {
Navigator.of(context).push(
CupertinoPageRoute(
builder: (context) =>
ItemDetails(
category.category
.elementAt(index)
.productId,
category.category
.elementAt(index)
.name,
category.category
.elementAt(index)
.description,
category.category
.elementAt(index)
.image,
)));
},
child: Stack(
children: <Widget>[
Center(
child: Image(
image: _loadImage(index),
height: 162.0,
width: 200.0,
),
)
],
),
),
),
),
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
margin: EdgeInsets.only(left: 15.0),
child: Column(
//mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 120.0,
child: Hero(
tag: category.category
.elementAt(index)
.name,
child: Text(
category.category
.elementAt(index)
.name,
style: TextStyle(
fontSize: 12.5,
fontWeight:
FontWeight.bold),
overflow:
TextOverflow.ellipsis,
),
),
margin:
EdgeInsets.only(right: 5.0),
),
Container(
height: 2.0,
),
Text(
AppConstants.CURRENCY_SYMBOL +
" " +
double
.tryParse(category
.category
.elementAt(index)
.price)
.toStringAsFixed(2),
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.bold,
color: Colors.blue),
overflow: TextOverflow.clip,
)
],
),
),
Container(
margin: EdgeInsets.only(right: 10.0),
alignment: Alignment.topRight,
child: Icon(
Icons.favorite,
color: Colors.blue,
),
)
],
),
Divider(
color: Colors.blue,
indent: 10.0,
),
],
),
) : Container();
}),
),
)