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.

45 lines
1.1KB

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