Flutter中如何基于列表动态创建对应名称的对象?
解决方案
你尝试的动态生成变量名的写法在Dart里是不合法的——Dart要求变量名必须在编译阶段确定,没办法通过循环中的字符串动态创建变量名。正确的做法是用Map来存储这些列表,把namesList里的名字作为Map的键,对应的值就是List<NameClass>对象。
修改后的代码示例
class FoodDetailsState extends State<FoodDetails> { // 定义Map来存储名字对应的列表 late Map<String, List<NameClass>> nameLists; @override void initState() { super.initState(); // 遍历namesList,为每个名字初始化空列表 nameLists = { for (String name in widget.namesList) name: <NameClass>[], }; } }
使用方式
后续需要访问某个名字对应的列表时,直接通过Map的键获取即可:
// 获取John对应的列表 List<NameClass>? johnList = nameLists['John']; // 往Doe的列表里添加元素 nameLists['Doe']?.add(NameClass(/* 传入初始化参数 */));
如果需要为每个列表预先添加初始元素,只需要在初始化Map时修改值的部分:
nameLists = { for (String name in widget.namesList) name: [NameClass(name: name)], // 假设NameClass有name参数 };
内容的提问来源于stack exchange,提问作者Aeden Thomas
相关产品推荐
相关产品推荐

