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

修改API请求后出现NoSuchMethodError,重建.g文件无效,求解决方案

问题排查与解决

核心原因

报错NoSuchMethodError: Class 'String' has no instance method 'toJson'的直接诱因是API接口定义中uetr参数未明确声明类型,导致代码生成工具(如build_runner+retrofit)错误地对该参数执行序列化逻辑;或是调用接口时传入了非String类型的参数,框架试图对其调用toJson方法却失败。

修复步骤

  1. 补全参数类型声明
    修改你的API服务代码,明确指定uetr的类型为String(如果是可选参数可声明为String?):

    @GET("/api/payments/income/{ref}/ultimate")
    Future<IncomePaymentActualDetailsResponse> getIncomePaymentActualDetails(
      @Path("ref") String ref,
      @Query("uetr") String uetr, // 明确标注参数类型
    );
    
  2. 检查调用传参
    确认调用getIncomePaymentActualDetails方法时,传入的uetr参数是纯String类型,而非自定义对象或其他复杂类型。如果之前传的是模型实例,需提取其中对应的String字段传入。

  3. 重新生成代码
    执行完整的代码生成命令,确保覆盖旧的.g文件:

    flutter pub run build_runner build --delete-conflicting-outputs
    

额外排查点

  • 若uetr是可选参数,后端允许不传该字段,可将参数声明为@Query("uetr") String? uetr,避免传入null时的潜在问题。
  • 确认IncomePaymentActualDetailsResponse类已正确配置json_serializable注解并生成了对应的序列化代码(虽然当前报错不指向这里,但可排除后续潜在问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:34:55