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
相关产品推荐
相关产品推荐

