在GridView Builder中选择项目效果

时间:2019-04-05 09:32:14

标签: dart flutter

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

我所说的选择效应是这样的: 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, 
                 ))

我能够创建选择效果,但是如果我点击任意一项,它将选择所有项。如何为每个单独的项目创建选择效果。

那么如何为每个单独的项目创建选择效果?

P.S。我只在代码中写了相关的东西

链接到原始问题(Flutter) Select Effect on items in Grid View Builder

2 个答案:

答案 0 :(得分:0)

好的,我建议您将无状态商品包装到GestureDetector

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

希望有帮助

答案 1 :(得分:0)

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

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