我从sqflite数据库中加载了GridView.builder中的项目。由于它的模型类不是有状态的,当然,我无法从那里创建对项目的选择效果。
当用户点击某个项目时,会选择该项目
GridView.builder(
gridDelegate:.....,
itemBuilder: (BuildContext context, int index) {
bool _selectItem = false;
return InkWell(
onTap: () {},
child: 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,
))
我可以创建一个选择效果,但如果我点击任何一个项目,它会选择所有项目。如何为每个单独的项目创建选择效果。
那么如何为每个单独的项目创建选择效果?
附:我在代码中只写了相关的东西
链接到原始问题:(Flutter) Select Effect on items in Grid View Builder
您可以尝试使用Hero
小部件进行简单动画,但如果您使用自定义动画,则必须将其更改为有状态小部件。
关于英雄小部件的短视频:https://www.youtube.com/watch?v=Be9UH1kXFDw