Flutter中如何检查Map内是否存在值为空的键?
检查Map中是否存在空值键的解决方案
我的Map数据如下:
Map? toSendMap = { 1: "", 2: "", 3: "", 4: "", 5: "", 6: "", 7: "", 8: "", 9: "", 10: "", 11: "", 12: "", 13: "", 14: "", 15: "", 16: "", 17: "", 18: "", 19: "", 20: "", 21: "", 22: "", 23: "", 24: "", 25: "", 26: "", 27: "", 28: "", 29: "", 30: "", 31: "", };
我想要检查该Map中是否存在值为空的键,尝试了多种方法都没得到预期结果,该如何实现?
方法一:用any()快速判断是否存在空值
Dart的Map类自带any()方法,可直接遍历键值对判断是否符合条件。由于你的Map是可空类型(Map?),需先做非空校验:
bool hasEmptyValue() { if (toSendMap == null) { return false; // 可根据业务需求调整返回值 } // 检查是否存在值为空字符串的键值对 return toSendMap!.values.any((value) => value.isEmpty); }
调用该函数后,若存在空值返回true,否则返回false。
方法二:手动遍历,获取具体空值键
如果需要知道哪些键对应空值,可手动遍历收集:
void checkEmptyValues() { if (toSendMap == null) { print("Map为空"); return; } List<int> emptyKeys = []; toSendMap!.forEach((key, value) { if (value.isEmpty) { emptyKeys.add(key); } }); if (emptyKeys.isNotEmpty) { print("存在空值的键:$emptyKeys"); } else { print("没有空值的键"); } }
注意事项
- 必须先对
toSendMap做非空判断,避免空指针异常; - 上述代码判断的是空字符串
"",若需同时处理null值,可将判断条件改为value == null || value.isEmpty。
内容的提问来源于stack exchange,提问作者Samet Demirtop
相关产品推荐
相关产品推荐

