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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:45:30