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.

60 lines
2.0KB

  1. import 'dart:developer';
  2. import 'dart:io';
  3. import 'package:dio/dio.dart';
  4. import 'package:flutter_bloc/flutter_bloc.dart';
  5. import '../../authentication/bloc/authentication_bloc.dart';
  6. import '../../common/const_enum.dart';
  7. import '../../main.dart';
  8. import '../../utils/local_storage.dart';
  9. class DioProvider {
  10. static Dio dio = Dio();
  11. static Dio instance() {
  12. dio.options.baseUrl = 'https://tpf.aztrace.vn/';
  13. // (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) {
  14. // client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  15. // return client;
  16. // };
  17. dio.interceptors.add(
  18. InterceptorsWrapper(
  19. onRequest: (options, handler) {
  20. var token = LocalStorage.getString(LocalStorageKey.access_token);
  21. if (token.isNotEmpty) {
  22. options.headers['Authorization'] = 'Bearer $token';
  23. }
  24. options.headers['Content-Type'] = 'application/json';
  25. options.headers['accept'] = 'application/json';
  26. log('⭐⭐⭐⭐⭐⭐ onRequest: ${options.uri}\n'
  27. 'data=${options.data}\n'
  28. 'method=${options.method}\n'
  29. 'headers=${options.headers}\n'
  30. 'queryParameters=${options.queryParameters}');
  31. return handler.next(options);
  32. },
  33. onResponse: (response, handler) async {
  34. // log('🍏🍏🍏🍏🍏🍏 onResponse: $response');
  35. return handler.next(response);
  36. },
  37. onError: (DioError e, handler) async {
  38. log('🔥🔥🔥🔥🔥🔥 onError: $e\n'
  39. 'Response: ${e.response}');
  40. handler.next(e);
  41. },
  42. ),
  43. );
  44. return dio;
  45. }
  46. static void logoutAndNavigationToSplashScreen() {
  47. LocalStorage.clearUserInfo();
  48. BlocProvider.of<AuthenticationBloc>(globalNavigator.currentContext!).add(
  49. const AuthenticationStatusChanged(
  50. AuthenticationStatus.unauthenticated,
  51. ),
  52. );
  53. }
  54. }