首页 > 解决方案 > 我怎样才能让这个 Map 双函数忽略/跳过空值?

问题描述

这里是:

Map<double, double> m2 = (await sheet.values.map.column(3, fromRow: 2))
        .map((key, value) => MapEntry(double.parse(key), double.parse(value)));
    List longitudelist = m2.values.toList();

我用它从 Google 表格中获取坐标。问题是,当没有纬度或经度时,整个事情都会崩溃。

我已经在它下面尝试过,但它没有用:

latitudelist.removeWhere((isEmpty) => isEmpty == "0.0");

错误:

未处理的异常:FormatException:无效的双精度

这是一个无效的替身,因为那里什么都没有。它不为空。如果纬度或经度坐标不存在,有人知道如何跳过值吗?

标签: flutterdart

解决方案


您可以使用 collection-for 来避免首先尝试从值或空字符串创建Map条目:null

Map<double, double> m2 = {
  for (var mapEntry in (await sheet.values.map.column(3, fromRow: 2).entries)
    if (mapEntry.key != null && mapEntry.key.isNotEmpty &&
        mapEntry.value != null && mapEntry.value.isNotEmpty)
      double.parse(mapEntry.key): double.parse(mapEntry.value),
};
List<double> longitudelist = m2.values.toList();

推荐阅读