我在网上学习了一个教程,目的是学习如何在颤振中拦截请求(这是指向教程:https://dhruvnakum.xyz/networking-in-flutter-interceptors#comments-list的链接)。他们的代码似乎运转良好,而我的代码却无法编译。我一直有这样的错误:**lib/data/network/dio_client.dart:7:27: error:方法'DioInterceptor‘不是为类'DioClient’定义的。
'package:interceptor_blog/data/network/dio_client.dart‘(’lib/data/lib/dio_client.dart‘)中的
下面是我的dio_client.dart文件的内容:
import 'package:dio/dio.dart';
class DioClient {
final _dio = Dio();
DioClient() {
_dio.interceptors.add(DioInterceptor());
}
Dio get dio => _dio;
}救命啊!
发布于 2022-09-15 10:01:24
在Dio包中没有可用的DioInterceptor()方法。
DioClient() { _dio.interceptors.add(InterceptorsWrapper()); }
在InterceptorsWrapper中,您可以根据需要修改请求、响应、错误。
发布于 2022-09-15 11:18:53
在查看您发布的教程时,作者指出:
加入阻断器的
方法
我们可以通过两种方式添加拦截器:使用内置类InterceptorsWrapper、QueuedInterceptorWrapper和扩展自定义类,让我们使用第二种方式添加拦截器。在网络文件夹中创建一个名为dio_interceptor.dart文件的新文件。使用Interceptor类扩展自定义DioInterceptor类。
您试过在项目中创建类DioInterceptor吗?作者确实提供了一个示例实现。
class DioInterceptor extends Interceptor {
final _prefsLocator = getIt.get<SharedPreferenceHelper>();
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
options.headers['Authorization'] = _prefsLocator.getUserToken();
super.onRequest(options, handler);
}
@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
// TODO: implement onResponse
super.onResponse(response, handler);
}
@override
void onError(DioError err, ErrorInterceptorHandler handler) {
// TODO: implement onError
super.onError(err, handler);
}
}https://stackoverflow.com/questions/73728728
复制相似问题