Flutter中如何为已有的_filterOptions嵌套列表每一项添加isChecked属性
实现方案
你可以在将选项存入_filterOptions前,遍历每个选项并追加isChecked: false属性即可。注意从json.decode返回的Map默认是不可直接修改的内部哈希表类型,建议先通过Map.from转为可修改的普通Map再追加属性,避免运行时报错。
修改后完整代码
List<dynamic> _filters = []; List<List<dynamic>> _filterOptions =[]; var filters = await json.decode(data)["getProductsByStore"]["aggregations"]; for(int i = 0; i < filters.length; i++){ _filters.add(filters[i]["label"]); // 预处理当前分组下的所有选项 List<dynamic> currentOptions = filters[i]["options"].map((option) { Map<String, dynamic> modifiableOption = Map.from(option); modifiableOption["isChecked"] = false; return modifiableOption; }).toList(); _filterOptions.add(currentOptions); } // 输出即可得到带isChecked属性的嵌套结构 print(_filterOptions);
后续批量修改方案
如果你已经将原始数据存入了_filterOptions,需要后续统一追加属性,可以用嵌套遍历实现:
for (var group in _filterOptions) { for (var option in group) { final modifiableOpt = Map.from(option); modifiableOpt["isChecked"] = false; // 替换原元素 group[group.indexOf(option)] = modifiableOpt; } }
内容的提问来源于stack exchange,提问作者Pulsara Sandeepa
相关产品推荐
相关产品推荐

