Flutter Dio拦截器编译报错求助:未定义DioInterceptor类
解决Flutter Dio拦截器编译报错问题
报错原因很明确:你在DioClient的构造函数里调用了DioInterceptor(),但这个类并没有被定义。教程里的代码能运行,是因为教程中包含了这个自定义拦截器的实现,你漏了这部分代码。
修复步骤
1. 定义自定义拦截器类
你需要创建一个DioInterceptor类,实现Dio的Interceptor接口,或者继承InterceptorsWrapper简化实现。下面是基础示例:
class DioInterceptor extends Interceptor { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { // 请求发送前的处理逻辑,比如添加token、打印日志等 print('请求URL: ${options.uri}'); super.onRequest(options, handler); } @override void onResponse(Response response, ResponseInterceptorHandler handler) { // 响应返回后的处理逻辑,比如解析数据、打印响应内容等 print('响应状态码: ${response.statusCode}'); super.onResponse(response, handler); } @override void onError(DioException err, ErrorInterceptorHandler handler) { // 请求出错时的处理逻辑,比如错误提示、日志记录等 print('请求错误: ${err.message}'); super.onError(err, handler); } }
2. 在DioClient中正确引用
把上面的DioInterceptor类添加到你的dio_client.dart文件中(或单独创建文件后导入),修改后的完整代码如下:
import 'package:dio/dio.dart'; // 自定义拦截器类 class DioInterceptor extends Interceptor { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { print('请求URL: ${options.uri}'); super.onRequest(options, handler); } @override void onResponse(Response response, ResponseInterceptorHandler handler) { print('响应状态码: ${response.statusCode}'); super.onResponse(response, handler); } @override void onError(DioException err, ErrorInterceptorHandler handler) { print('请求错误: ${err.message}'); super.onError(err, handler); } } class DioClient { final _dio = Dio(); DioClient() { _dio.interceptors.add(DioInterceptor()); } Dio get dio => _dio; }
这样代码就能正常编译了,你可以根据需求修改拦截器里的逻辑,比如添加请求头、处理token过期等。
内容的提问来源于stack exchange,提问作者She-Codes
相关产品推荐
相关产品推荐

