#flutter #dart #flutter-getx
Вопрос:
Я использую GetConnect для вызова API в своем приложении. Я сталкиваюсь с проблемой, когда обновление API с истекшим сроком действия токена вызывается несколько раз. Я написал код, как показано ниже, может ли кто-нибудь проверить его для меня
*class BaseConnect extends GetConnect {
@override
void onInit() {
var _storage = Get.find<DataStorage>();
httpClient
..baseUrl = GlobalConfiguration().get(kBaseUrl)
..timeout = Duration(seconds: kTimeOut)
..addAuthenticator((request) async {
if (_storage.getRefreshToken().isNotEmpty) {
var res = await get(kApiRefreshToken,
query: {'token': _storage.getRefreshToken()},
decoder: (map) => BaseResponse.fromMap(map));
TokenModel model = TokenModel.fromMap(res.body.data);
if (model.accessToken.isNotEmpty) {
await _storage.setToken(model);
request.headers[kAuthorization] = "$kBearer ${model.accessToken}";
}
}
return request;
})
..addRequestModifier((request) {
var token = _storage.getAccessToken();
if (token.isNotEmpty)
request.headers[kAuthorization] = "$kBearer $token";
return request;
});
}
Future<BaseResponse> getResponse(String url, {dynamic query}) async {
var response = await get(url,
query: query, decoder: (map) => BaseResponse.fromMap(map));
if (response.isOk) {
return response.body.toMap()['status'] == kSuccessApi
? response.body
: BaseResponse.fromMap(response.body.toMap());
} else {
return BaseResponse.fromMap(jsonDecode(response.bodyString));
}
}
}*