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

Flutter/Dart项目仅安卓设备报错:‘int’类型不是‘double’类型的子类型

解决Flutter项目安卓端type 'int' is not a subtype of type 'double'错误

这个问题的核心原因是:Web端的Dart会自动进行int和double的隐式类型转换,但移动端(安卓/iOS)的Dart是严格强类型,不支持这种隐式转换,所以在浏览器能正常运行的代码,到安卓设备上会触发类型不匹配错误。

具体解决步骤:

  • 定位报错代码行:连接安卓设备后,在VS Code中启动调试,查看控制台的错误栈信息,找到触发类型转换错误的具体文件路径和行号。
  • 显式进行类型转换:
    • 将int转为double:对int类型的值调用toDouble()方法,比如int num = 5; double converted = num.toDouble();
    • 将double转为int:根据业务需求选择toInt()(直接截断小数部分)或round()(四舍五入),比如double num = 5.6; int converted = num.round();
  • 规范变量类型定义:定义变量时明确指定类型,避免依赖Dart的类型推断。比如不要写var price = 10;,而是根据实际需求写int price = 10;或double price = 10.0;,让编译器提前发现类型不匹配问题。
  • 处理外部数据来源:如果数据来自接口、本地存储或第三方库,要确认返回值的类型。比如接口返回的数字是int类型,但你的变量定义为double,必须显式转换后再赋值。

示例:错误代码与修正

错误代码(Web端正常,安卓端报错):

// 变量是double类型,但赋值了int值
double containerHeight = 200;

修正后:

// 显式转为double,或直接用小数形式赋值
double containerHeight = 200.toDouble();
// 或者
double containerHeight = 200.0;

内容的提问来源于stack exchange,提问作者Yvar Ker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:14:56