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

Flutter基础:遍历对象时for循环报expected an identifier错误如何解决

错误原因

    1. 数组内的Map定义语法错误:你写的label = 'Reckless'是给外层声明的label变量赋值,不是给Map添加label键,Dart中Map的键值对需要用key: value格式。同时toggles被声明为Object类型,Dart无法识别它是可迭代的列表类型,无法直接用for-in遍历。
    1. Flutter组件的children参数接收List<Widget>类型,你直接在children后写带大括号的for循环不符合Dart的集合for语法规范。

修正方案

第一步:修正数据定义

你可以选择两种定义方式,第一种是直接用Map数组:

// 修正为Map数组类型,键值对用:赋值
final List<Map<String, String>> toggles = [
  {'label': 'Reckless'},
  {'label': 'Feckless'},
  {'label': 'Legless'},
];

如果需要用点语法.label访问属性,更推荐定义强类型数据类:

// 定义数据类
class ToggleItem {
  final String label;
  ToggleItem({required this.label});
}

// 声明数组
final List<ToggleItem> toggles = [
  ToggleItem(label: 'Reckless'),
  ToggleItem(label: 'Feckless'),
  ToggleItem(label: 'Legless'),
];

第二步:修正Row遍历写法

使用Dart集合for语法,把循环逻辑放在列表括号内,不需要加循环大括号:
如果用Map版本的toggles,写法如下:

Row(
  children: [
    for (var toggle in toggles)
      Text('label ${toggle['label']}')
  ],
)

如果用自定义数据类版本,写法如下:

Row(
  children: [
    for (var toggle in toggles)
      Text('label ${toggle.label}')
  ],
)

内容的提问来源于stack exchange,提问作者Walrus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:03