You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何基于已有Map定义嵌套Map?

Dart中在父Map里引用已有Map的解决方案

你的写法本身语法没问题,大概率是变量作用域或者定义顺序的问题,按下面的方式调整就能正常工作:

情况1:直接引用同一个Map对象

如果只是想让book里的列表指向已有的question对象(两者共享同一个Map实例,修改一方会影响另一方),只要保证question在book之前定义就行:

// 先定义question
final Map<String, dynamic> question = {
  'rating': {
    'added': false,
  }
};

// 再定义book,直接引用question
final Map<String, dynamic> book = {
  'detail': {
    'questions': [
      question
    ]
  }
};

情况2:创建独立的Map副本

如果想让book里的Map是完全独立的(修改其中一个不会影响另一个),需要复制原Map的内容:

final Map<String, dynamic> question = {
  'rating': {
    'added': false,
  }
};

final Map<String, dynamic> book = {
  'detail': {
    'questions': [
      // 创建浅拷贝
      Map.from(question),
      // 嵌套Map需要深拷贝的话,可手动处理:
      {'rating': Map.from(question['rating'] as Map)}
    ]
  }
};

常见坑点

  • 别在book定义之后才声明question,Dart不允许使用未定义的变量
  • 如果是在类里定义,注意成员变量的初始化顺序,也可以用late修饰符延迟初始化

内容的提问来源于stack exchange,提问作者best_of_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:52:01