Flutter中如何将Iterable的map结果存入List<int?>数组?是否需转int?
问题解答
1. 是否需要解析为int类型?
需要显式转换为int类型。原代码中f['id']的类型是dynamic,虽然打印结果看起来是int,但如果不做类型转换,后续使用List<int?>类型的arrayValues时可能出现类型安全问题——比如若f['id']实际是字符串或其他类型,会引发运行时错误。建议在map操作中完成类型转换:
// 若f['id']可能是字符串,用parse转换 Iterable<int> intoarray = listaMap.interests!.map((f) => int.parse(f['id'].toString())); // 若确定f['id']本身就是int类型,直接强转 // Iterable<int> intoarray = listaMap.interests!.map((f) => f['id'] as int);
另外注意原代码里Iterable<void>的类型标注是错误的,应改为对应类型或让Dart自动推断。
2. 如何存入数组?一次性还是逐个存入?
推荐一次性存入,代码简洁且效率更高:
// 方式1:直接将Iterable转为List赋值 List<int?> arrayValues = intoarray.toList(); // 方式2:若arrayValues已初始化,用addAll批量添加 List<int?> arrayValues = []; arrayValues.addAll(intoarray);
如果非要逐个存入,也可以用循环,但完全没必要:
List<int?> arrayValues = []; for (var id in intoarray) { arrayValues.add(id); }
内容的提问来源于stack exchange,提问作者rafa_pe
相关产品推荐
相关产品推荐

