扩展图块尾随图标会更新与一个图块交互时列表中的所有内容。如何只更改展开磁贴的图标?

2024-04-09

如何才能使图标仅针对单击的图块进行更新?现在的行为是all单击一个图块时图标会更新。

这是代码(修剪为仅包含相关部分):

Column(children: List.generate(
    filteredFAQ.length,
    (index) => Column(
        children: [
            if(index > 0) {
                Container(
                    child: Column(
                        children: <Widget>[
                            ExpansionTile(
                            trailing: SvgPicture.string(
                                isQuestionClicked
                                    ? addPayeeArrowUp
                                    : rightArrow,
                                color: primary,
                              ),
                              onExpansionChanged:
                                  (bool expanded) {
                                setState(() {
                                  isQuestionClicked = expanded;
                                });
                              },
                            ),
                        ],
                    )
                )
            }
        ]
    )
),);

以下是该行为的屏幕截图:

[afterClickingOneTile2 https://i.stack.imgur.com/la7iW.png

我使用了 ExpansionTile 内置的 onExpansionChange。


要仅更改展开磁贴的图标,您可以使用以下方法:

创建一个Map:

Map<int, bool> state = {};

并在您的中相应地使用它ExpansionTile检查它是否被选中,如果值为true or false:

 List.generate(6, (index) {
          return ExpansionTile(
            title: Text('Item $index'),
            trailing: state[index] ?? false
                ? Icon(Icons.arrow_drop_up)
                : Icon(Icons.arrow_drop_down),
            onExpansionChanged: (value) {
              setState(() {
                state[index] = value;
              });
            },
            children: [
              Container(
                height: 100,
                color: Colors.red,
              ),
            ],
          );
        }),

完整的可运行示例:

import 'package:flutter/material.dart';

const Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        scaffoldBackgroundColor: darkBlue,
      ),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  Map<int, bool> state = {};

  bool isExpanded = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Column(
        children:
            // generate 6 ExpansionTiles
            List.generate(6, (index) {
          return ExpansionTile(
            title: Text('Item $index'),
            trailing: state[index] ?? false
                ? Icon(Icons.arrow_drop_up)
                : Icon(Icons.arrow_drop_down),
            onExpansionChanged: (value) {
              setState(() {
                state[index] = value;
              });
            },
            children: [
              Container(
                height: 100,
                color: Colors.red,
              ),
            ],
          );
        }),
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展图块尾随图标会更新与一个图块交互时列表中的所有内容。如何只更改展开磁贴的图标? 的相关文章

随机推荐

  • 在 VBA 中更改 tabledef .connect 属性

    我试图做一件已经做过一百次的事情 但突然就行不通了 acc AutomationSecurity msoAutomationSecurityLow Remove Security Prompt acc OpenCurrentDatabase
  • 如何使用频道链接将数据从 YouTube API 提取到 Google 表格

    我在这里完全是新手 我尝试了很多脚本来执行以下操作 显然来自 stackoverflow 中的其他问题 我还不太擅长编写代码 我的目标是 从 Sheet 1 A2 A 的通道链接中读取通道 ID 将订阅者总数拉至 B2 B 将频道总观看次数
  • 在 div 中显示缩放图像的部分

    所以我有一个脚本 当我提供图像细节和 div 大小时 它会计算图像中的区域和比例因子 以便显示 div 内图像的最佳区域 计算 div 最佳区域的逻辑是在 PHP 中完成的 它会输出一个 JSON 如下所示 scale 1 34 x1 50
  • Azure 地图控制导致 Angular 通用 SSR 错误

    我正在使用Azure 地图 Web 控制 https www npmjs com package azure maps control与 Angular 11 一起使用 我可以在浏览器端创建地图的实例 没有任何问题 html div cla
  • 调试 tcl 流程 - 就像 bash -

    我只是想知道是否有类似的东西set x因为它存在于 Bash forTCL 中 它允许我跟踪脚本流程 然后帮助我调试它 Simple trace add execution source enterstep apply cmd op put
  • 流Vs。 Map 的 EntrySet 中的迭代器 - Java 8

    据我了解 以下代码应该打印true 因为两者Stream and Iterator指向第一个元素 但是 当我运行以下代码时 它正在打印false final HashMap
  • ARM 汇编分支到寄存器或内存内部的地址

    我想知道在 ARM 汇编中我可以使用哪条指令分支到存储在某个内存地址中的地址或标签 例如 我们可以使用B LABEL来跳转到LABEL 但现在目的地只能在运行时知道 并且它存储在某个已知的内存位置 是否有类似 B 地址 的东西 Thanks
  • 更改平板电脑视口以准确显示固定尺寸元素

    我有一个宽度恰好为 1000 像素 高度为 850 像素的 HTML 元素 它实际上是一个在画布标记上包含 HTML5 游戏的 iFrame 但我希望这并不重要 我希望元素呈现在平板电脑上 以便视口缩放以始终显示整个元素 仅此而已 因此 当
  • docker context create ecs myecs - 只需要一个参数

    我正在尝试创建一个将自动与 AWS 的 ECS 集成的 Docker 上下文 我正在关注这个教程 https aws amazon com blogs containers deploy applications on amazon ecs
  • 完全可折叠 div 的问题

    我正在尝试创建一个在单击时打开和隐藏 div 的按钮 我一直在参考以下内容codepen https codepen io dangvanthanh pen BsDbg关于如何开始 但想要一些稍微不同的东西 在引用的 codepen 中 d
  • 存储在 iOS 应用程序的 XCode 项目文件中的配置文件

    我以为我已经弄清楚如何在源代码管理中存储 XCode 项目 我只对 pbxproject 文件进行版本控制 这似乎效果很好 但后来我注意到配置文件也保存在那里 这看起来不太好 我正在与另一位开发人员远程工作 我们都有单独的配置文件 每次我们
  • 从右上角增长div?

    我有一个需要交互的元素网格 当其中一个 div 被点击时 它会变大 对于大多数元素来说 从右下角 生长 一个 div 是可以接受的 my div animate width 379px height 204px 但是 在某些情况下 从右下角
  • 输入字段中的文本无法删除

    我有一个输入字段 例如
  • 返回视图中两列之一 - 以不为空的一列为准

    我有一个包含三列的表 ColumnA ColumnB ColumnC AAA NULL 123 BBB 222 NULL CCC NULL NULL 我想创建一个 SELECT 语句 该语句将返回 ColumnA 然后创建第二列 该列将显示
  • 在 Django 中格式化日期时如何使用本地化的“短格式”?

    我需要显示本地化的格式化日期 如果我使用 django utils formats localize 则日期返回为 2012 年 6 月 11 日 如何将日期格式化为返回 06 11 2012 并进行适当的本地化 例如 11 06 2012
  • 如何在 Laravel Blade 中将多个子行数据与父行一起添加

    我一直在尝试通过刀片添加多个数据 在我的刀片形式中 我使用克隆 添加行 例如 一份请购单有许多项目 My blade view 刀片视图代码
  • Clojure 和 scala 互操作

    我熟悉 scala 类 对象可以从 clojure 调用 因为 scala 编译为字节码 并且 clojure 对此很满意 然而 调用 clojure 函数和从 scala 导入命名空间是否一样轻松 我想将优秀的 lift 框架和 cloj
  • Visual Studio 扩展来执行 SQL

    我的 Visual Studio 2010 项目中有几个 sql 文件 我正在寻找一个扩展或添加 我可以右键单击 sql 文件并针对 sql server 数据库执行其内容 有人知道这样的扩展是否存在吗 从 SQL Server Denal
  • 如何将 p 值注释到 R 上的分面条形图上?

    我想知道是否可以在图表顶部和两个条形图之间注释 p 值 就我而言 使用 ggplot2 我有一个具有 2 个条件 传代和分离 的多面图 并且在每个条件下 有 3 个级别 3 个条形图 GA CH KO 如果可能的话 我有一些来自成对比较的
  • 扩展图块尾随图标会更新与一个图块交互时列表中的所有内容。如何只更改展开磁贴的图标?

    如何才能使图标仅针对单击的图块进行更新 现在的行为是all单击一个图块时图标会更新 这是代码 修剪为仅包含相关部分 Column children List generate filteredFAQ length index gt Colu