dictionary - Dart Map.remove哪里没有删除所有符合删除条件的键

标签 dictionary flutter dart

好吧,这很奇怪,我正在使用removeWhere删除 map 中的所有空值,但它们都可以通过!有没有搞错!

firebaseUploadMap.removeWhere((key, value) => value == null);

这是运行后的 map 打印结果:
{languages: null, latitude: 55.9521138, longitude: -3.196447, houseNum: 1, street: Princes Street, city: Edinburgh, postcode: EH2 2EQ, country: GB, toolsInPossession: null, jobsPropositioned: null, jobsCompleted: null, jobTypesLiked: null, jobsShared: null, jobRatings: null, signUpDate: Timestamp(seconds=1586989986, nanoseconds=301779000)}

Null值仍然很多。与变量类型有关吗?语言是一个列表,我的null删除器缺少它。 jobRatings是一个 bool(boolean) 值和null,Dart不能将它们识别为Null吗?

我尝试复制 map ,遍历原始 map 中的键,然后将其删除,但是输出与Dart的.removeWhere相匹配。

我该如何解决?

最佳答案

喔好吧。抱歉,请大家注意,@ jamesdlin使我得到了答案。在尝试提供一个完全可复制的示例时,我发现当我将Person对象转换为 map 时,出于某种原因,我决定将对象的所有字段都设置为字符串,因此应使用语言:String(value)。所以我像在NULL中一样将null设置为“Null”类型的String。因此,我无法将其删除。

我已对此进行了纠正,将键映射到原始数据类型,然后在removeWhere完全起作用。我假设Firebase数据库将自动将Dart列表转换为它们的Array数据类型,因此,类(class)是:如果要去除可空条目,请不要将可空字段转换为字符串。

再次遗憾地浪费了人们的时间,很高兴解决它。

关于dictionary - Dart Map.remove哪里没有删除所有符合删除条件的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61239830/

相关文章:

python - 映射不解包元组

android-studio - 我的flutter项目无法在Android设备上运行,并且提到了一些许可问题

android - 将字符串时间和日期转换为 DateTime - Dart/Flutter

android - 带有ListTiles和Button行的Flutter下拉菜单

python - 是否有一行 python 代码来替换这个嵌套循环?

python - 存储 8M+ sha256 哈希的最有效内存方式

python - 将文本文件转换为字典

android - Flutter youtube_player_flutter : ^7. 0.0+6 全屏

Dart或Flutter如何读取一个float32 little endian编码的二进制文件并转换成List<double>?

listview - Flutter - 如何在删除元素后保持 ExpansionTiles 列表的 _isExpanded 状态?