在 Flutter 中更新下拉数据出现错误

2024-01-10

我正在开发一个小部件,其中包含dropdownbutton在颤振中。该小部件创建dropdownmenuitems向用户传入的 url 发出请求后。

我已经看到正在拨打的电话和有效的响应,但是当我使用setState要更新下拉列表的数据源,我收到以下错误:

'package:flutter/src/material/dropdown.dart': 断言失败: 第 560 行 pos 15: 'items == null || 我/颤振(11514):items.isEmpty ||值==空|| items.where((DropdownMenuItem item) => item.value == I/flutter (11514): value).length == 1': 不正确。

我尝试研究这个错误,但没有找到有用的答案。代码如下:

class _MyWidgetState extends State<MyWidget> {

List<DropdownMenuItem<String>> _data = [];
String _selected = '';

@override
void initState() {
   super.initState();
   _loadData();
 }
 void _loadData() async {
    if (widget.urlToFetchData.isNotEmpty) {
      var response = await http.get(widget.urlToFetchData);
      if (response.statusCode == 200) {
         Map<String, dynamic> jsonResponse = convert.jsonDecode(response.body);
         jsonResponse.forEach((key, value){
           setState(() {
                  this._data.add(new DropdownMenuItem(
                                  child: new Text(value.toString()),
                                  value: value.toString(),
                             ));
           });
         });
      } else {
         print("Request failed with status: ${response.statusCode}.");
       }
    }
  }
}

@override
Widget build(BuildContext context) {
   if (_data.length == 0) {
      return new Container();
   } else {
        return Column(
            children: <Widget> [
                  new Text(
                    widget.dropdownLabelTitle
                 ),
                DropdownButton(
                     value: _selected,
                     items: _data,
                     hint: new Text(widget.defaultOptionText),
                     onChanged: (value) {
                        _selected = value;
                        widget.valueReturned(_selected);
                        setState(() {

                        });
                     }
                   )
                ],
              );
            }
       }
    }

现在,我完全知道在小部件初始化时,下拉按钮中的项目字段是用空列表初始化的,但我认为通过在 http 调用完成时调用 setState ,这将更新该值。

我尝试了不同的更新数据的方法(通过创建本地列表,然后使用addAll或者只是通过分配),但我得到了同样的错误。

有人知道如何解决这个问题吗?


您收到此错误是因为下拉菜单尝试选择不存在的项目。

DropdownButton(
        value: _selected, # < here you are trying to select `String _selected = '';`
        items: _data,

要解决这个简单的删除value或将其设置在某处。

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

在 Flutter 中更新下拉数据出现错误 的相关文章

  • 如何延迟 AngularJS 应用程序初始化?

    我有一些数据正在后台异步处理 并且希望延迟整个 AngularJS 应用程序的初始化 直到完成 BackgroundData initialized 是一个 Q 承诺 所以像这样 BackgroundData initialized the
  • flutter web http.get 返回“不支持的操作:Platform._version”

    我正在开发 flutter web 应用程序并尝试从互联网获取一些数据 我正在使用包 http http dart 并尝试这样做 await http get url 但我得到了这个错误 不支持的操作 Platform version da
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • 如何更改 Flutter 中的默认字体系列

    如何更改应用程序的每个文本以使用特定字体 我可以使用以下命令单独更改它们TextStyle 但如何让我的应用程序默认使用特定字体 你能告诉我怎么做吗 您可以按照以下步骤更改 Flutter 应用程序的默认字体系列 1 将字体文件添加到项目文
  • 从 Firestore 获取值并使用异步将输出存储为全局

    我正在尝试获取 firestore 数据 然后将其存储在变量中 async function getchildContent Parent Message let count 0 var db firebase firestore var
  • 没有脚手架的 DefaultTabController?

    我正在尝试使用DefaultTabController在一些小部件的中间 所以我的TabBar不能在AppBar并且必须关闭一些小部件 所以我的问题是当我使用时TabBarView它崩溃了 这是一个 Flutter 示例的示例 但没有找到如
  • WCF - AsyncPattern=true 或 IsOneWay=true

    我的 WCF 服务中很少有方法需要花费大量时间 生成报告和发送电子邮件 根据目前的要求 要求客户端应用程序只需提交请求 然后不等待整个过程完成 它将允许用户继续在客户端应用程序中执行其他操作 而不是等待整个过程完成 我很困惑该走哪条路 As
  • 如何从 BottomNavigationBar 中删除图标?

    我只需要 BottomNavigationBarItem 中的标签 但我找不到删除它们的方法 您可以隐藏标签showSelectedLabels and showUnselectedLabels设置为 false 但图标没有等效项 构造函数
  • “即发即忘”异步委托的正确方法

    就我而言 我对异步委托这个话题很生疏 如果我想以 一劳永逸 的方式异步调用一个方法 这是一种合适的方法吗 Action action DoSomething action BeginInvoke action EndInvoke null
  • 如何更改 ElevatedButton 颜色或阴影 Flutter

    我当时用的是RaisedButton直到 Flutter 弃用了它 我们不能再使用它了 有一个建议说 使用ElevatedButton相反 所以我尝试使用它 但我看不到类似的属性color elevation focusColor etc
  • Flutter如何在BottomNavigationBar中添加边距或填充

    我正在尝试制作底部导航栏 但在屏幕上左右填充 现在 我用容器包裹 BottomNavigationBar 并在其中添加填充 问题是 BottomNavigationBar 默认背景仍然包裹所有图层 所以我们可以删除那里的背景颜色吗 Goal
  • flutter 中 sqlite 中的多个参数

    我想知道如何将多个参数传递给 sqllite 中的原始查询 我的代码如下 query async get a reference to the database Database db await DatabaseHelper instan
  • 扑。应用程序不会崩溃并发送崩溃报告

    我已经集成了Firebase Crashlytics在我的应用程序中 我正在测试 Android 应用程序 我强迫崩溃来检查它 if true List arr throw arr 1 2 我的问题是应用程序不会崩溃 我只是在日志中得到这个
  • 已发布的 Flutter 应用程序在启动时崩溃

    编辑 此问题的解决方案是将您的 flutter 版本升级到较新的 dev 版本 then 1 7 0 您还可以上传单独的 APK 版本 但我个人不喜欢这个选项 请确保您没有从 flutter github 开发存储库下载 错误的构建 因为那
  • 如何在 flutter 中仅显示列表中的 5 项

    我想在 flutter 中显示一个列表 我正在使用listView 问题是我只想显示 5 个项目 我的意思是当用户向下滚动时我想从开始索引中删除并将另一个小部件添加到包含我的小部件的列表的末尾 但是当我这样做时ScrollView 不会停留
  • 配置根项目“firebase_auth”时出现问题

    my error 我无法构建 apk 发布文件 我完成了应用程序一段时间 没有出现错误 几天后 我在构建应用程序时收到此错误 请告诉我如何摆脱它 我尝试了 4 个小时 什么也没得到 FAILURE Build failed with an
  • Chrome 扩展同步调用 - 仅在窗口关闭后创建窗口

    我有这个代码 function voteNewWindow mailNum chrome windows create url http www google com incognito true function window conso
  • Flutter 网络图像作为 Google 地图标记

    我想在屏幕上的谷歌地图上添加网络图像作为标记 API确实支持一个功能Bitmapdescriptor fromBytes 但是 我不知道如何将它与网络图像一起使用 BitmapDescriptor fromBytes byteData 首先
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 实施 ChangeNotifier 与 StateNotifier

    我很熟悉Provider https pub dev packages provider打包并将其与ChangeNotifier 假设我有 3 个 getter 和具有不同功能的方法 切换加载 切换图像加载 切换 ObsecurePassw

随机推荐

  • Fargate 错误:无法从私有子网中提取 ECR 中托管的容器

    我正在尝试创建以下架构 一个具有两个子网的 vpc 一个是公共子网 包含 NatGateway 和 InternetGateway 另一个是私有子网 我在私有子网中启动 Fargate 服务 但失败并出现以下错误 CannotPullCon
  • 将多个 apk 或 aab 添加到 Google Play 中的“不包含”部分

    当我想发布生产版本时 我只能将应用程序包添加到 不包括 部分 那么如何将多个应用程序包添加到该部分 这是GG Play的bug吗 确保让分阶段推出 100 这个对我有用
  • Ruby:initialize() 与类体?

    在 Ruby 中 将代码放入initialize 方法而不是直接在类体中 两者似乎在调用时都被执行MyClass new 清楚地 initialize 可以接受参数 但这是唯一的区别吗 class MyClass puts Hello de
  • C++重复N次迭代

    我可以清楚地做这样的事情 for int i 0 i lt 10000 i testIteration 但是是否有任何 std 函数可以在一行中执行类似的操作 像这样的东西 std repeat 10000 testIteration In
  • Macos 上使用brew 的多个版本的.Net Core

    我已经搜索了一段时间 但在 2019 年我还没有找到任何关于如何在 Mac 上从 Net Core 获得多个版本的准确信息 我的用例是 我使用 Net Core 2 2 进行主动开发 并且我想使用 Net Core 3 及其现在拥有的优点
  • 从远程源下载图像并调整大小然后保存

    你们中有人知道我可以使用一个好的 php 类从远程源下载图像 将其大小重新调整为 120x120 并使用我选择的文件名保存吗 所以基本上我会将 http www site com image jpg 中的图像以 120x120 像素保存到我
  • 相当于 Java 中 C# 的 BitConverter.ToUInt16

    我的问题是关于Java的 Java 中 BitConverter ToUInt16 的等效项是什么 我尝试翻译一下C 的这个方法 public static implicit operator ushort HashlinkReader p
  • 运行捆绑安装时,在 1.9 兼容模式下使用 jruby 创建新的 Rails 项目会挂起

    有人遇到过这个问题吗 我能够在 1 8 兼容模式下很好地创建项目 这是我正在使用的 Mac OS X 狮子 JRuby 1 6 4 Java 1 6 0 31 RVM 1 8 1 我正在运行以下命令 JRUBY OPTS 1 9 rails
  • 无需root即可在linux下编译boost [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我如何在linux下编译boost而不写入系统文件夹 我需要在我的特定文件夹中获取 boost 的头文件和共享库 您无需成为 root 即
  • Amazon S3 在跨账户中文件“访问被拒绝”异常

    我有 2 个 AWS 账户 帐户 A 有 S3 存储桶 BUCKET 我使用 Java api 将文件放入其中 我已将 BUCKET 策略配置为允许跨帐户文件发布 但是 当我尝试从帐户 A 打开此文件时 它说AccessDenied使用 h
  • HPET 可以在 Windows 中直接访问吗?

    我想使用高性能事件计时器 HPET 作为分析工具来快速进行非常高精度的测量 timeGetTime 在 1 毫秒时无法提供足够的分辨率 并且 QueryPerformanceCounter 每次读取的速度比我想要的要慢得多 我在研究这个问题
  • librosa 无法打开由 librosa 创建的 .wav?

    我正在尝试使用 librosa 通过从一些持续时间为 60 秒的 wav 文件中剪切 1 秒的片段来生成一些数据 这部分有效 我创建了所有文件 我也可以通过任何播放器收听它们 但是如果我尝试使用 librosa load 打开它们 我会收到
  • HBase更新操作

    我是HBase新手 我发现HBase客户端API不支持更新操作 那是对的吗 如果是这样 更新特定行键的值的建议最佳实践是什么 您可以使用 PUT 来创建或更新任何单元格的值 你don t需要使用删除 除非您希望新版本不包含某些旧单元格 说我
  • SQLite 查询异常 Android Studio 语法错误代码 1

    所以我试图为我的 Android 应用程序构建一个搜索方法 但我一直遇到这个错误 android database sqlite SQLiteException near Prefect syntax error code 1 while
  • 解析YAML,返回行号

    我正在根据 YAML 数据制作一个文档生成器 它将指定每个项目是从 YAML 文件的哪一行生成的 做这个的最好方式是什么 所以如果 YAML 文件是这样的 key1 item 1 key2 item 2 key1 another item
  • 配置文件不包括签名证书

    我已将 Xcode 更新到 8 因为我无法运行我的项目 我尝试启用 禁用 自动管理签名 选项 但不断收到 2 个警报 您的应用程序 ID 无法注册到您的开发团队 配置文件 不包括签名证书 我的签名证书 我是我们开发人员门户上的团队代理 我可
  • 如何在 Angular 中将标签与其外部的表单字段关联起来?

    假设我正在 ngFor 循环中创建标签和表单字段 如下所示 应用程序组件 ts export class AppComponent items aaa bbbbbb ccccccccc 应用程序组件 html div class form
  • Xcode 看不到我的 iOS 设备,但 iTunes 可以

    我有一个奇怪的问题 我的 Mac 上安装了装有 iOS 5 0 1 9A405 的 iPad 和 iOS SDK 5 0 1 以及 Xcode 4 2 Build 4C199 Xcode 看不到我的设备 它像往常一样说 iOS设备 而不是
  • Kafka Streams.allMetadata() 方法返回空列表

    所以我正在尝试使用 Kafka 流进行交互式查询 我有 Zookeeper 和 Kafka 在本地运行 在 Windows 上 我使用 C temp 作为 Zookeeper 和 Kafka 的存储文件夹 我已经设置了这样的主题 kafka
  • 在 Flutter 中更新下拉数据出现错误

    我正在开发一个小部件 其中包含dropdownbutton在颤振中 该小部件创建dropdownmenuitems向用户传入的 url 发出请求后 我已经看到正在拨打的电话和有效的响应 但是当我使用setState要更新下拉列表的数据源 我