这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

37 lines
1.1 KiB

import 'package:dev_app/utils/loading.dart';
import 'package:core/tokens/http.token.dart';
import 'package:dio/dio.dart';
import 'package:get/get.dart';
class ExceptionInterceptor extends Interceptor {
ExceptionInterceptor();
@override
void onError(DioException err, ErrorInterceptorHandler handler) {
if (err.requestOptions.extra.containsKey(HttpTokens.ignoreError)) {
return handler.next(err);
}
var errorMessage = err.message ?? '网络请求失败';
if (err.response != null) {
if (err.response!.statusCode == 401) {
errorMessage = '您的会话已超时, 请重新登录';
_showErrorToast(errorMessage);
Get.toNamed('/account/login');
return;
}
if (err.response?.data?['error_description'] != null) {
errorMessage = err.response!.data['error_description'];
_showErrorToast(errorMessage);
return handler.next(err);
}
}
_showErrorToast(errorMessage);
return handler.next(err);
}
void _showErrorToast(String errorMessage) {
Loading.toast(errorMessage);
}
}