【发布时间】:2022-09-28 19:24:55
【问题描述】:
Flutter Custom Interceptors 代码在这里,它在 onRequest 方法以及 onResponse 方法和 onError 方法上显示错误。最近开始颤振实施。
class AppInterceptors extends Interceptor {
Dio _dio = Dio();
SharedPreferences _prefs;
TokenAnalyzer _tokenAnalyzer;
AppInterceptors(this._dio, this._tokenAnalyzer);
@override
Future<dynamic> onRequest(RequestOptions options) async {
_prefs = await _sharedPreferences;
var accessToken = _prefs.get(\"access_token\") ?? \'\';
return options;
}
@override
Future<dynamic> onResponse(Response options) async {
return options;
}
@override
Future<dynamic> onError(DioError dioError) async {
if (dioError.type == DioErrorType.response &&
dioError.response.statusCode < 200 ||
dioError.response.statusCode > 400) {
if (dioError.response.statusCode == 500) {
prefs.setString(\"ErrorMessage\", dioError.response.data);
errorService.showErrorMessage(dioError.response.data);
throw (dioError.response.data);
} else if (dioError.response.statusCode == 401) {
var _prefs = await _sharedPreferences;
prefs.setString(\"ErrorMessage\", dioError.response.data);
}
}
return null;
}
这是另一个文件实现的DIO灌输
class DioHttpClient {
Dio _dio = Dio();
BaseOptions options = new BaseOptions(
receiveTimeout: 1000 * 60,
headers: {\'Content-Type\': \'application/json\', \'Authorization\': \'\'});
DioHttpClient(TokenAnalyzer tokenAnalyzer) {
_dio = new Dio(options);
_dio.interceptors.add(AppInterceptors(_dio, tokenAnalyzer));
}
Dio get HttpClient {
return _dio;
}
}
API调用代码如下:
Dio _httpClient1 = Dio();
Future<T> post<T>(url, body, {allowAnnoymous = false}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
try {
print(\"called new post method $url\");
clientService.isBusy = true;
String token = prefs.get(\"AccessToken\");
Response response = await _httpClient1.post<T>(url,
data: jsonEncode(body),
options: Options(headers: {
\"allowanonymous\": allowAnnoymous.toString(),
\'Authorization\': \'Bearer $token\',
}));
print(\"==================== success post\");
throwError(response);
return response.data;
} catch (ex) {
throwErrorMessage();
throw ex;
}
}
我得到以下错误,它显示错误像这样
\'AppInterceptors.onRequest\' (\'Future<dynamic> Function(RequestOptions)\') isn\'t a valid override of \'Interceptor.onRequest\' (\'void Function(RequestOptions, RequestInterceptorHandler)\').
你能帮帮我吗!谢谢提前!!!
标签: flutter interceptor dio