如何通过字符串拼接动态调用Dart中的List对象?
解决方案
Dart是静态类型语言,没法直接通过字符串拼接出来的变量名去访问对应的局部或全局变量。你可以用Map做映射表,把变量名字符串作为键,对应的List作为值,就能通过拼接的字符串拿到目标List了。
修改后的代码如下:
void main() { // 定义目标List List<Map<String, String>> listOf3AInitial = [{"name": "4A"}, {"name": "5A"}]; // 创建映射表,存储所有需要动态访问的List final Map<String, List<Map<String, String>>> listMap = { "listOf3AInitial": listOf3AInitial, // 后续新增其他List,直接在这里加键值对就行,比如: // "listOf3BInitial": [{"name": "4B"}, {"name": "5B"}] }; String _listOf = "listOf"; String _year = "3A"; String _type = "Initial"; // 拼接出映射表的键名 var listKey = "$_listOf$_year$_type"; // 从映射表中获取对应的List var targetList = listMap[listKey]; print(targetList); // 输出:[{name: 4A}, {name: 5A}] }
这种方式适配你做动态表单的需求,以后新增不同年份、类型的下拉选项List时,只需要往listMap里加新的键值对,核心的动态获取逻辑不用改动。
内容的提问来源于stack exchange,提问作者user18355990
相关产品推荐
相关产品推荐

