Untitled
unknown
plain_text
7 months ago
2.4 kB
2
Indexable
Never
import 'package:cool_app/data/helpers/failure.dart'; import 'package:cool_app/data/locals/shared_pref.dart'; import 'package:cool_app/presentation/pages/auth/login_screen.dart'; import 'package:cool_app/presentation/utils/nav_utils.dart'; import 'package:dio/dio.dart'; class ErrorHandler implements Exception { late Failure failure; ErrorHandler.handle(dynamic error) { if (error is DioException) { failure = _handleDioError(error); } else { failure = Failure("Terjadi Kesalahan Tak Dikenal"); } } Failure _handleDioError(DioException error) { if (error.response?.statusCode == 401) { Prefs().clearSession(); Nav.toAll(const LoginScreen()); } switch (error.type) { case DioExceptionType.connectionTimeout: return Failure( "Koneksi terputus. Mohon periksa koneksi internet Anda."); case DioExceptionType.sendTimeout: return Failure("Waktu pengiriman permintaan habis."); case DioExceptionType.receiveTimeout: return Failure("Waktu penerimaan respons habis."); case DioExceptionType.badResponse: switch (error.response!.statusCode) { case 401: Prefs().clearSession(); Nav.toAll(const LoginScreen()); return Failure("Tidak Diizinkan. Silahkan login kembali."); case 403: return Failure( "Akses ditolak. Anda tidak memiliki izin untuk melakukan tindakan ini."); case 404: return Failure("Tidak Ditemukan"); case 500: return Failure( "Terjadi Kesalahan Server Internal. Silakan coba lagi nanti."); default: return Failure("Terjadi Kesalahan Tak Dikenal"); } case DioExceptionType.cancel: return Failure("Permintaan dibatalkan. Silakan coba lagi."); case DioExceptionType.unknown: return Failure("Terjadi Kesalahan Tak Dikenal."); case DioExceptionType.badCertificate: return Failure( "Terjadi Kesalahan Sertifikat SSL. Mohon periksa koneksi jaringan Anda."); case DioExceptionType.connectionError: return Failure( "Terjadi Kesalahan Koneksi. Mohon periksa koneksi jaringan Anda."); default: return Failure("Terjadi Kesalahan yang Tidak Diperkirakan."); } } }
Leave a Comment