(颤动)在网格视图构建器中选择对项目的效果

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

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

选择效果的意思是: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, 
                 ))

我可以创建一个选择效果,但如果我点击任何一个项目,它会选择所有项目。如何为每个单独的项目创建选择效果。

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

附:我在代码中只写了相关的东西

dart flutter
1个回答
0
投票

由于itemList index不是为了选择和取消选择而管理的,你的项目数据从sqflite数据库加载到GridView.builder中,你通过局部变量手动选择到GridView,

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

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

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

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