【问题标题】:Select Item effect in a GridView Builder在 GridView 生成器中选择项目效果
【发布时间】:2019-08-27 04:13:39
【问题描述】:

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

我所说的选择效果是这样的:

当用户点击一个项目时,它被选中

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


    【解决方案1】:

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

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

    希望对你有帮助

    【讨论】:

    • 但是如何在无状态类中调用 setState
    • 你不行,这基本上是设置Stateless Widget的目的,你可以把GestureDetector包裹在一个Stateful Widget中或者你必须折射你class
    • 据我所知,模型类不能被包裹在有状态的小部件中。我必须从 GridView 构建器中设置状态。但我不知道怎么做。你有什么想法吗?
    • 如果您创建了一个Stateless 小部件,您可以完全将其折射为Stateful 一个
    • 我认为您没有正确理解我的问题。我已在此处发布所有详细信息:stackoverflow.com/questions/55540983/… 请查看此内容。谢谢:)
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多