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.

50 lines
1.3KB

  1. import 'dart:convert';
  2. import 'dart:developer';
  3. import 'package:dio/dio.dart';
  4. import 'package:dio_http_cache/dio_http_cache.dart';
  5. import 'package:farm_tpf/utils/const_common.dart';
  6. import 'package:farm_tpf/utils/pref.dart';
  7. class DioProvider {
  8. static Dio instance() {
  9. final dio = Dio();
  10. // dio.interceptors.add(AuthInterceptor());
  11. dio.interceptors.add(HttpLogInterceptor());
  12. dio.interceptors.add(
  13. DioCacheManager(CacheConfig(baseUrl: ConstCommon.baseUrl)).interceptor);
  14. return dio;
  15. }
  16. }
  17. class HttpLogInterceptor extends InterceptorsWrapper {
  18. var pref = LocalPref();
  19. @override
  20. Future onRequest(RequestOptions options) async {
  21. var token = await pref.getString(DATA_CONST.TOKEN_KEY);
  22. options.headers["Authorization"] = "Bearer $token";
  23. options.receiveTimeout = 20000;
  24. log("onRequest: ${options.uri}\n"
  25. "data=${options.data}\n"
  26. "method=${options.method}\n"
  27. "headers=${options.headers}\n"
  28. "queryParameters=${options.queryParameters}");
  29. return options;
  30. }
  31. @override
  32. Future onResponse(Response response) {
  33. // log("onResponse: $response");
  34. return super.onResponse(response);
  35. }
  36. @override
  37. Future onError(DioError err) {
  38. // log("onError: $err\n"
  39. // "Response: ${err.response}");
  40. return super.onError(err);
  41. }
  42. }