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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:55:27