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
相关产品推荐
相关产品推荐

