【问题标题】:How to update Map's key with new value if the key exists?如果键存在,如何用新值更新 Map 的键?由于 Map 只能有 1 个键
【发布时间】:2022-10-31 16:26:10
【问题描述】:
我有一个 todoDate (Map<String, List> 变量),我添加了一个键,但有时该键已经存在,因此没有任何内容添加到 Map 数据类型我想将值添加到现有键但不起作用。
我有 2 个文本字段(每个都有一个控制器)和一个按钮:按钮的 onPressed 中的 addKey() 功能。 void addKey() { for (var key in todoDate.keys) { final containsKey = todoDate.containsKey(key); if (containsKey) { todoDate.update(key, (value) => todoDate[key] = value); } else { // 如果 key 不存在,创建新的 key 和 value setState(() { todoDate[dateController.text.toTitleCase()] = [ taskController.text.toTitleCase() ]; }); } }}但是它不起作用,我认为我写的更新方法是错误的,那么我该怎么做呢?

【问题讨论】:

  • else 条件下您使用 setState ,所以我假设您的变量不会在 UI 上更新。所以你也必须在if条件下setState。那么您的 UI 将更新为新值

标签: flutter dart


【解决方案1】:

update 函数已经有一个名为 ifAbsent 的参数。所以你需要的只是将新值传递给更新和ifAbsent。 你的函数看起来像这样:

void addKey(key,newValue) {
    todoDate.update(key, (value) => newValue,ifAbsent: () => newValue);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多