颤动中的多个依赖下拉菜单

2024-05-01

我正在尝试在颤动上构建多个依赖的下拉菜单。第二个依赖于第一个。这是我实现的下拉列表的代码。

Container(
            child: new DropdownButton<String>(
              underline: SizedBox(
                height: 1,
              ),
              hint: new Text("Select Faculty"),
              value: facultyId,
              items: faculty.map((item) {
                return new DropdownMenuItem(
                  child: new Text(item['name']),
                  value: item['id'].toString(),
                );
              }).toList(),
              onChanged: (faculty == null)
                  ? null
                  : (String newValue) {
                      setState(() {
                        filteredbatch.clear();
                        facultyId = newValue;
                        for (var item in allbatch) {
                          if (item['facultyId'].toString() == newValue){
                          filteredbatch.add(item);
                            disableBatch = false;
                          }
                        }
                      });
                      print(facultyId);
                    },
            ),
          ),
          Container(
            child: new DropdownButton<String>(
                underline: SizedBox(
                  height: 1,
                ),
                disabledHint: new Text("Select Faculty First"),
                hint: Text("Select Batch"),
                value: batchId,
                onChanged: disableBatch
                    ? null
                    : (String newValue) {
                        setState(() {
                          batchId = newValue;
                          disableSection = false;
                        });
                        print(batchId);
                      },
                items: filteredbatch.map((item) {
                  return DropdownMenuItem(
                    child: Text(item['name']),
                    value: item['id'].toString(),
                  );
                }).toList()),
          ),

每当我从第一个下拉菜单中选择一个下拉菜单时,它就会启用第二个下拉菜单,并让我从该下拉菜单中选择一个项目。当我从第二个下拉列表中选择一个项目并返回更改第一个下拉列表时,它会抛出错误,表明下拉列表需要一个具有相应值的项目。找到 0 或 2 个。我在这里迷路了。我该如何解决这个错误?


这里发生的事情非常简单。假设“allbatch”具有以下值:

教师: foo ,其批处理ID: foo1、foo2、foo3

教师: bar ,其批处理 ID:bar1、bar2、bar3。

当您在第一个下拉列表中选择 foo 时,将创建一个新的“filteredbatch”,它仅包含 foo1、foo2、foo3。然后,您在第二个下拉列表中选择 foo3,一切仍然工作正常......

但是当您将第一个下拉列表更改为 bar 时,“filteredbatch”仅包含:bar1、bar2、bar3,而您的第二个下拉列表值仍设置为 foo3,在新生成的“filteredbatch”中找不到该值,然后您就得到了您看到的错误。

要解决此问题,只需在第一个下拉菜单 onChanged 方法中更改“filteredbatch”之前将 batchId 设置为 null:

  setState(() {
    //fix
    batchId = null;
    //end of fix
    filteredbatch.clear();
    facultyId = newValue;
    for (var item in allbatch) {
      if (item['facultyId'].toString() == newValue){
      filteredbatch.add(item);
        disableBatch = false;
      }
    }
  });

您的第二个下拉菜单将恢复为提示文本,应用程序用户将必须选择一个新的batchId。

如果您还有其他问题,请随时提问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

颤动中的多个依赖下拉菜单 的相关文章

随机推荐

  • 如何在sql server中获取从当前日期时间到过去7天的过去7天的数据

    您好 我正在使用 pentaho 将表 A 数据从 sql server 加载到 mysql 加载数据时 我只需要从 sql server A 表获取最近 7 天的数据到 mysql 在sql server中createddate列数据类型
  • IllegalStateException:无活动

    我有一个非常奇怪的问题 我一生都无法弄清楚 我有一个即将完成的应用程序 我已经开始在不同版本的 Android 和模拟器中的不同屏幕尺寸 密度上测试它 一切工作正常 直到我使用 Android 3 1 和 3 2 Honeycomb 我得到
  • 模拟三星 Galaxy Tab

    我想使用新的 Samsung Galaxy Tab 平板电脑测试我的应用程序 我应该在模拟器中设置什么参数来模拟该设备 我应该设置什么分辨率和密度 如何表明这是一个大屏幕设备 这款平板电脑支持哪些硬件 最大堆大小是多少 哪个安卓版本 UPD
  • 在Windows应用程序中创建一个文本文件

    我想打开一个文本文件并向该文件写入一些数据 这是我的代码 FileStream fs1 new FileStream D Yourfile txt FileMode OpenOrCreate FileAccess Write StreamW
  • ngClass多次调用方法[重复]

    这个问题在这里已经有答案了 我创建了一个方法并将其附加到 ngClass 以根据条件添加两种样式 我还将数字作为参数传递以在 switch case 中使用 组件 html div class circle div class circle
  • 用于在管道传输结果时链接异步操作的 GCD 模式

    来自 JavaScript 世界 使用异步 javascript 承诺 我相信在 Swift 中使用 GCD 异步队列也能完成同样的事情 你能给我举一个例子 其中在队列中指定了 2 到 3 个异步函数 其中一个异步操作将结果提供给第二个 第
  • 为什么 Chart.js 画布不考虑容器元素的填充?

    我将 Chart js 与简单的折线图一起使用 但 Chart js 计算的宽度和高度属性似乎基于父元素的总宽度和高度 忽略填充 var options maintainAspectRatio false responsive true v
  • 添加月份时的 Java 日历/日期问题

    如果我们在当前日期 2013 年 5 月 31 日星期五 18 33 00 IST 2013 中添加 1 个月 则会产生 2013 年 6 月 30 日星期日 18 33 00 国际标准时间 如果我们减去 1 个月 则得出 2013 年 5
  • BigQuery Crashlytics - 无崩溃的用户/会话

    我已将 firebase crashlytics 数据链接到 bigquery 并设置 google 提供的数据工作室模板 除了我的仪表板所需的最重要的指标之外 还有很多重要的数据 无崩溃用户 and 无崩溃会话以百分比表示 在我可以用来计
  • ExtJs 5 网格存储/视图模型绑定:无法修改 ext-empty-store

    我正在为这个拔掉头发 我有一个带有一些网格 一个商店和一个 viewModel 的视图 我需要不同网格中商店的不同过滤版本 因此我尝试将每个过滤商店绑定到网格 现在我什至无法让商店加载到网格中 我的代码如下所示 Store Ext defi
  • Java 中的额外导入会减慢代码加载时间吗?

    向 Java 代码中添加更多 import 语句是否可能会减慢将类加载到 JVM 中所需的时间 不 导入仅在编译中用于查找类引用 添加未使用的导入 它们不会执行任何操作 换一种方式 import java util 只是意味着你可以写 Ma
  • GQL中有OR运算符吗?

    我不知道这里是否有人问过这个问题 我看到了几个关于 like 运算符的问题 但我不确定这是否是我正在寻找的 抱歉我在这方面是菜鸟 但我正在从 MySQL 迁移到 Google App Engine 并且想知道 GQL 中是否有类似于 MyS
  • C++:如何将存储在局部变量中的函数指针作为模板参数传递

    using namespace std float test1 float i return i i int test2 int i return i 9 struct Wrapper typedef void wrapper type i
  • 是否可以从通用特征实现中排除某种类型?

    我正在尝试用毯子创建一个错误类型From实施任何Error 但是由于这种类型本身就是一个Error我遇到冲突 pub struct ApiError pub i64 pub String impl
  • 在cypress中捕获websocket请求

    我试图捕获测试期间发生的所有请求 我的应用程序使用 WebSocket 并且使用拦截命令我无法捕获 wss 请求 有什么办法可以做到这一点吗 我认为拦截命令不能直接捕获网络套接字 一种方法是观察 ws 通信的结果 如下所示使用 Cypres
  • 如何使用jq提取json值子字符串

    我有这个 json temperature 21 humidity 12 3 message Today ID 342 is running 我想使用jq来获取这个json temp 21 hum 12 3 id 342 正如你所看到的 我
  • 将 WPF 单选按钮设置为具有正确 IsEnabled 行为的切换按钮

    我需要将一些分组单选按钮设置为切换按钮 为此 我将以下样式应用于单选按钮 Style StaticResource x Type ToggleButton 这给了我想要的风格 但我注意到一个恼人的副作用 我需要能够在禁用控件时更改所选按钮
  • 使用android应用程序的http post方法发送json对象

    我正在尝试将 JSON 对象发送到我的 php web 服务 我已经提到了这个网址 http www josecgomez com 2010 04 30 android accessing restfull web services usi
  • 根据其他列设置列的值

    我有一个数据框 如下所示 ID Score New ID New Score 123 5 456 456 1 789 789 0 123 我想为 New ID 列提供相同的分数 只是顺序不同 期望的结果 ID Score New ID Ne
  • 颤动中的多个依赖下拉菜单

    我正在尝试在颤动上构建多个依赖的下拉菜单 第二个依赖于第一个 这是我实现的下拉列表的代码 Container child new DropdownButton