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

