0

这里是:

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:无效的双精度

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

4

3 回答 3

1

您可以使用 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();
于 2020-09-28T21:07:50.437 回答
0

你可以这样做

List a = [null, null, 4, 6, 7];
a.removeWhere((value) => value == null);
print(a); // prints [4, 6, 7]
于 2020-09-28T18:59:26.903 回答
0

可以使用wherebeforetoList方法。

List longitudelist = m2.values.where((v) => v != null).toList();
于 2020-09-28T19:12:00.097 回答