You need to enable JavaScript to run this app. 升级Flutter Retrofit版本后_ApiClient不是类型无法用于重定向构造器报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

升级Flutter Retrofit版本后_ApiClient不是类型无法用于重定向构造器报错如何解决

Flutter Retrofit升级后_ApiClient不是类型报错解决方案

报错原因

该报错出现在Retrofit 4.0及以上版本,官方调整了生成代码的命名规则:旧版本生成的实现类命名为_ApiClient,新版本统一改为_$ApiClient前缀格式,旧的构造函数重定向指向的类名已不存在。

解决步骤

  • 修改工厂构造函数的重定向目标类名,将_ApiClient替换为_$ApiClient
  • 重新执行代码生成命令,刷新api_client.g.dart文件:
    常规生成命令:dart run build_runner build
    存在缓存冲突时使用:dart run build_runner build --delete-conflicting-outputs
  • 确认pubspec.yaml中retrofit和retrofit_generator的大版本号匹配,避免版本不兼容问题

修改后完整代码示例

import 'package:retrofit/retrofit.dart';
import 'package:dio/dio.dart';
import 'package:abc/views/home/models/categorymodel.dart';
part 'api_client.g.dart';

@RestApi(baseUrl: "http://localhost:3000")
abstract class ApiClient {
  factory ApiClient(Dio dio) = _$ApiClient;

  @GET("/categories")
  Future<CategoryModel> getCategories(@Queries() Map<String, dynamic> queries);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:54:04