在Dart中使用double.parse()转换坐标时遭遇类型错误问题
解决Google Geo API坐标转double的类型错误问题
嘿,我太懂你遇到的这个坑了!其实问题的核心很简单——你误以为locationData['bounds']['northeast']是字符串类型,所以想用double.parse()来转换,但实际上它本身已经是double类型了!
为什么会报错?
double.parse()方法的参数要求必须是String类型,而你传入的是一个已经是double的数值,这就直接触发了类型不匹配的错误。你打印时能看到正常的数值,是因为Dart会自动把double类型的值转换成字符串输出,但它的本质还是数字类型,不是字符串哦。
正确的处理方式
完全不需要用parse,直接赋值或者做个简单的类型转换就行:
// 方式1:直接赋值,Dart会自动推断类型 var neLat = locationData['bounds']['northeast']; // 方式2:显式声明类型,代码更严谨 double neLat = locationData['bounds']['northeast']; // 方式3:如果担心数据类型不确定,用as强转兜底 double neLat = locationData['bounds']['northeast'] as double;
验证数据类型的小技巧
要是以后再遇到类似的类型疑惑,可以先打印变量的运行时类型确认:
print(locationData['bounds']['northeast'].runtimeType);
执行后控制台会输出double,这样就能彻底明确它的真实类型啦!
内容的提问来源于stack exchange,提问作者Rinktacular
相关产品推荐
相关产品推荐

