在GridView Builder中选择项效果

问题描述 投票:0回答:2

我从sqflite数据库中加载了GridView.builder中的项目。由于它的模型类不是有状态的,当然,我无法从那里创建对项目的选择效果。

选择效果的意思是:When users tap on an item, it is selected

当用户点击某个项目时,会选择该项目

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

dart flutter
2个回答
0
投票

好的,我建议你将无状态项目包装成GestureDetector

然后你可以决定你要检测哪个手势并对它做出反应,这里是doc

希望它有所帮助


0
投票

您可以尝试使用Hero小部件进行简单动画,但如果您使用自定义动画,则必须将其更改为有状态小部件。

关于英雄小部件的短视频:https://www.youtube.com/watch?v=Be9UH1kXFDw

© www.soinside.com 2019 - 2024. All rights reserved.