我从sqflite数据库中加载了GridView.builder中的项目。由于它的模型类不是有状态的,当然,我无法从那里创建对项目的选择效果。
当用户点击某个项目时,会选择该项目
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,
))
我可以创建一个选择效果,但如果我点击任何一个项目,它会选择所有项目。如何为每个单独的项目创建选择效果。
那么如何为每个单独的项目创建选择效果?
附:我在代码中只写了相关的东西
由于itemList index
不是为了选择和取消选择而管理的,你的项目数据从sqflite数据库加载到GridView.builder中,你通过局部变量手动选择到GridView,
您需要将选择字段插入到项目表中,而不是局部变量,当插入项目时,第一次默认值项目为false。
InkWell(onTap: () { //===To create Select Effect====//
setState(() {
itemList[index].selectItem = !itemList[index].selectItem
});
},
然后在onTap之后管理项目选择