我有从sqflite数据库加载到GridView.builder中的项目。当然,由于它的模型类不是有状态的,因此我无法从那里对项目创建Select效果。
当用户点击一个项目时,该项目被选中
GridView.builder(
gridDelegate:.....,
itemBuilder: (BuildContext context, int index) {
bool _selectItem = false;
return Stack(
children: <Widget>[
itemsList[index]), //====Actual Item=====//
InkWell(onTap: () { //===To create Select Effect====//
setState(() {
if (_selectItem == false) {
_selectItem = true;
print("Item Selected");
} else {
_selectItem = false;
print("Item UnSelected");
}
});
},
child: Opacity(
opacity: _selectItem == true ? 0.5 : 0.0,
child: Icon(Icons.select)
),]); },
itemCount: itemsList.length,
))
我能够创建选择效果,但是如果我点击任意一项,它将选择所有项。如何为每个单独的项目创建选择效果。
那么如何为每个单独的项目创建选择效果?
P.S。我只在代码中写了相关的东西
答案 0 :(得分:0)
由于未管理itemList index
的选择和取消选择,
您的商品数据从sqflite数据库加载到GridView.builder中,
您可以通过将局部变量手动输入GridView来管理选择,
您需要将选择字段插入项目表中,而不是局部变量, 第一次将插入项插入表时,默认值为false。
InkWell(onTap: () { //===To create Select Effect====//
setState(() {
itemList[index].selectItem = !itemList[index].selectItem
});
},
然后在onTap之后管理项目选择