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

Dart(Flutter)中如何通过循环访问动态命名变量的更新值

在Dart/Flutter中批量访问变量值的正确方式

你当前的问题核心是Dart不支持通过字符串拼接的方式直接访问变量,你拼出来的只是普通字符串,并非变量本身的引用。要解决这个问题,最合理的做法是把分散的变量替换为集合类型,比如List或Map,通过索引或键来批量访问值。

方案1:用List存储变量

将所有_selectedRegNoUpdate相关变量整合到一个List中,循环时直接通过索引获取对应值:

// 初始化List,填充6个初始值为'Reg No'的元素
List<String> _selectedRegNoUpdates = List.filled(6, 'Reg No');

// 下拉选择更新时,通过索引修改对应位置的值(比如更新第4个元素,索引从0开始)
_selectedRegNoUpdates[3] = '12345';

// 循环访问
for(int i = item!['workedWith'].length; i < 6 ; i++){
  print(i.toString());                                                                                                        
  String workedWithValue = _selectedRegNoUpdates[i]; // 直接通过索引获取值
                                                                                                      
  print(workedWithValue); // 输出对应位置更新后的值
};

方案2:用Map存储变量

如果需要保留类似原变量名的标识,可以用Map,以字符串为键存储对应值:

// 初始化Map,键对应原变量名,值为初始值
Map<String, String> _selectedRegNoUpdates = {
  '_selectedRegNoUpdate': 'Reg No',
  '_selectedRegNoUpdate1': 'Reg No',
  '_selectedRegNoUpdate2': 'Reg No',
  '_selectedRegNoUpdate3': 'Reg No',
  '_selectedRegNoUpdate4': 'Reg No',
  '_selectedRegNoUpdate5': 'Reg No',
};

// 下拉选择更新时,通过键修改对应值
_selectedRegNoUpdates['_selectedRegNoUpdate4'] = '12345';

// 循环访问
for(int i = item!['workedWith'].length; i < 6 ; i++){
  print(i.toString());                                                                                                        
  String key = i == 0 ? '_selectedRegNoUpdate' : '_selectedRegNoUpdate$i';
  String workedWithValue = _selectedRegNoUpdates[key]!;
                                                                                                      
  print(workedWithValue); // 输出更新后的值
};

原方法失效的原因

你之前拼接出的workedWithPosition只是字符串"_selectedRegNoUpdate3",它和变量_selectedRegNoUpdate3没有任何关联。Dart不会自动将字符串解析为变量引用,所以打印的只是字符串本身,而非变量存储的实际值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:01:21