我有从sqflite数据库加载到GridView.builder中的项目。当然,由于它的模型类不是有状态的,因此我无法从那里对项目创建Select效果。
当用户点击一个项目时,该项目被选中
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,
))
我能够创建选择效果,但是如果我点击任意一项,它将选择所有项。如何为每个单独的项目创建选择效果。
那么如何为每个单独的项目创建选择效果?
P.S。我只在代码中写了相关的东西
链接到原始问题:(Flutter) Select Effect on items in Grid View Builder
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以尝试将Hero
小部件用于简单的动画,但是如果您使用自定义动画,则必须将其更改为有状态的小部件。
关于英雄小部件的简短视频:https://www.youtube.com/watch?v=Be9UH1kXFDw