You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart从Map转换String到Double报错:'int'不是'String'子类型

解决方法

错误根源很清晰:locData['lat']实际是int类型,但double.tryParse()要求传入String类型参数,直接传递int就会触发'type 'int' is not a subtype of type 'String''错误。网上方案用parse是因为对应的数据源是字符串格式的数字,但你的场景无需parse,直接做类型转换即可。

修改后的代码示例:

final locData = Map<String, dynamic>.from(local);
var dubLat = locData['lat'];
double? lat;

// 根据实际类型处理转换
if (dubLat is int) {
  lat = dubLat.toDouble();
} else if (dubLat is String) {
  lat = double.tryParse(dubLat);
} else if (dubLat is double) {
  lat = dubLat;
}

如果能确定locData['lat']只会是数字类型(int/double),也可以简化成:

final locData = Map<String, dynamic>.from(local);
var dubLat = locData['lat'];
final lat = dubLat is num ? dubLat.toDouble() : null;

内容的提问来源于stack exchange,提问作者Loftie Fourie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:15:27