Flutter集成Retrofit与Dio时出现‘Type Dio not found’错误求助
解决Retrofit生成代码后Dio未找到的问题
问题分析
报错Type 'Dio' not found出现在自动生成的service.g.dart中,核心原因是主类文件的Dio导入方式错误,导致代码生成工具未在生成文件中正确引入Dio依赖,同时原类定义存在语法问题也会影响生成逻辑。
解决方案
1. 修正主Service类的代码与导入
在Service类所在的dart文件顶部,添加Dio的标准导入:
import 'package:dio/dio.dart';
同时修复类定义的语法错误,并调整构造函数写法:
@RestApi(baseUrl: 'https://someapi.com/') abstract class Service { // 修复class与Service之间的空格缺失问题 factory Service(Dio dio, {String baseUrl}) = _Service; @Headers({ 'contentType': 'application/json', }) @POST('path') Future<User> createUser( @Body() User user, ); }
2. 清理缓存并重新生成代码
执行以下命令清除旧的生成文件,强制重新生成代码:
flutter pub run build_runner clean flutter pub run build_runner build --delete-conflicting-outputs
3. 验证生成文件的导入
打开service.g.dart文件,检查顶部是否存在Dio的导入语句:
import 'package:dio/dio.dart';
若存在则说明问题已解决;若仍缺失,重复步骤1和2即可。
4. 确认依赖版本兼容性
当前依赖版本是兼容的:retrofit:3.0.1要求dio:^4.0.0,你使用的dio:^4.0.6满足版本要求,无需调整。
内容的提问来源于stack exchange,提问作者luckyhandler
相关产品推荐
相关产品推荐

