(扑动)在Grid View Builder中选择对项目的效果

时间:2019-04-05 17:56:12

标签: 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 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。我只在代码中写了相关的东西

1 个答案:

答案 0 :(得分:0)

由于未管理itemList index的选择和取消选择, 您的商品数据从sqflite数据库加载到GridView.builder中, 您可以通过将局部变量手动输入GridView来管理选择,

您需要将选择字段插入项目表中,而不是局部变量, 第一次将插入项插入表时,默认值为false。

 InkWell(onTap: () {         //===To create Select Effect====//
                setState(() {
                  itemList[index].selectItem  = !itemList[index].selectItem 
                });
              },

然后在onTap之后管理项目选择