Dart中初始化Map元素列表后添加元素报‘已定义’错误,如何解决?
解决Dart中列表添加元素时的"faqList is already defined"错误
你遇到的faqList is already defined错误,是因为在同一个作用域内重复声明了同名的faqList变量——比如你的代码中如果第一行的注释未生效,或是在其他位置已经声明过这个变量,就会触发该错误。
正确添加元素的方法
首先确保只声明一次faqList,再通过以下方式添加元素:
1. 先初始化空列表,再逐个添加元素
var faqItem = <String, dynamic>{ "title": 'Core Ideas', "content": [ "ABC", "BCA", "YZX" ] }; // 仅声明一次列表,初始为空 List<Map<String, dynamic>> faqList = <Map<String, dynamic>>[]; faqList.add(faqItem); // 添加新的独立FAQ条目 faqList.add({ "title": 'New Topic', "content": ["DEF", "EFG"] });
2. 初始带元素,后续追加元素
var faqItem = <String, dynamic>{ "title": 'Core Ideas', "content": [ "ABC", "BCA", "YZX" ] }; // 初始包含一个元素 List<Map<String, dynamic>> faqList = [faqItem]; // 用add添加单个元素 faqList.add(faqItem); // 用+=添加多个元素(需传入列表) faqList += [ { "title": 'Another FAQ', "content": ["XYZ", "ZXY"] }, faqItem ];
注意事项
如果需要添加独立的FAQ条目,不要重复添加同一个faqItem对象——Dart中对象是引用类型,重复添加会导致列表所有元素指向同一个对象,修改其中一个会影响全部。要创建独立条目,可直接新建Map,或者复制现有对象:
// 新建Map faqList.add({ "title": 'Core Ideas', "content": ["ABC", "BCA", "YZX"] }); // 复制现有Map生成新对象 faqList.add(Map.from(faqItem));
内容的提问来源于stack exchange,提问作者Vipin Verma
相关产品推荐
相关产品推荐

