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

Flutter中in_app_purchase包sku_details_wrapper.g.dart类型转换异常求助

问题根源

这是in_app_purchase 1.0.8版本的已知安卓端序列化bug:原生安卓返回的introductoryPriceAmountMicros字段本身是int类型,但官方自动生成的JSON序列化代码错误地将其强转为String?类型,导致类型不匹配报错。iOS端不受影响是因为iOS侧没有这个字段的返回逻辑,不会触发这段错误代码。

可行解决方案

方案1:升级依赖包(优先推荐)

官方在后续版本已经修复了这个问题,直接将in_app_purchase升级到1.0.9及以上的稳定版本即可。操作步骤:

  • 修改pubspec.yaml中in_app_purchase的版本号到≥1.0.9
  • 依次执行flutter clean、flutter pub get
  • 卸载设备上的旧应用,重新编译运行即可

方案2:临时修复(适用于无法升级版本的场景)

如果项目存在其他依赖约束,暂时不能升级in_app_purchase版本,可以用以下方法临时修复:

  1. 找到pub缓存中in_app_purchase_android包下的sku_details_wrapper.g.dart文件
  2. 将报错行:
introductoryPriceMicros: json['introductoryPriceAmountMicros'] as String? ?? '',

修改为:

introductoryPriceMicros: json['introductoryPriceAmountMicros']?.toString() ?? '',
  1. 重新编译项目即可生效。注意这个修改仅在本地缓存生效,清理pub缓存或者换开发环境需要重新修改。如果要长期生效,可以将in_app_purchase_android包fork到自己的代码仓库修改后,在pubspec.yaml中用dependency_overrides指定自己修改后的依赖源。

方案3:临时规避(仅救急使用)

如果你的应用内购商品没有配置首购优惠价,可以登录Google Play后台,删除所有商品的 introductory price 配置,此时接口返回的introductoryPriceAmountMicros字段为null,不会触发类型转换错误。这个方法仅适合临时紧急上线使用,不推荐长期保留。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:06:00