From 39a7f8e71d15dec032664a0402fb189812b225cc Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Wed, 12 Jul 2023 12:42:59 +0530 Subject: [PATCH 01/17] feat(error-interceptor): update handleUnauthenticatedUser params and create isLoginApi method Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index 07d9696..db233aa 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -31,15 +31,14 @@ abstract class ErrorInterceptor extends Interceptor { if (code == 401) { // IF headers contains key [isAuthRequired] // then not clearing auth data when 401 occurs - final isLoginApi = error.requestOptions.headers - .containsKey(Constants.isAuthRequiredAPIKey); + final isLoginApi = checkIsLoginApi(error); // Delaying for 300ms so that other futures // can complete before navigating to unauthorizedScreen Future.delayed( const Duration(milliseconds: 300), () { if (!isLoginApi) { - handleUnauthenticatedUser(); + handleUnauthenticatedUser(error); } return handler.reject( UnauthenticatedError( @@ -120,5 +119,12 @@ abstract class ErrorInterceptor extends Interceptor { ); } - FutureOr handleUnauthenticatedUser(); + bool checkIsLoginApi(DioError error) { + return isLoginApi(error.requestOptions) || + error.requestOptions.headers + .containsKey(Constants.isAuthRequiredAPIKey); + } + + FutureOr handleUnauthenticatedUser(DioError error); + bool isLoginApi(RequestOptions requestOptions); } From a169ffcc96ae23bdc6cd724876bd2e8691eac7f6 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Wed, 12 Jul 2023 13:27:59 +0530 Subject: [PATCH 02/17] feat(error-interceptor): use custom error and string path Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index db233aa..1ef7e28 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -29,16 +29,17 @@ abstract class ErrorInterceptor extends Interceptor { if (error.type == DioExceptionType.badResponse) { final code = error.response!.statusCode; if (code == 401) { + final unauthenticatedError = error as UnauthenticatedError; // IF headers contains key [isAuthRequired] // then not clearing auth data when 401 occurs - final isLoginApi = checkIsLoginApi(error); + final isLoginApi = checkIsLoginApi(unauthenticatedError); // Delaying for 300ms so that other futures // can complete before navigating to unauthorizedScreen Future.delayed( const Duration(milliseconds: 300), () { if (!isLoginApi) { - handleUnauthenticatedUser(error); + handleUnauthenticatedUser(unauthenticatedError); } return handler.reject( UnauthenticatedError( @@ -119,12 +120,12 @@ abstract class ErrorInterceptor extends Interceptor { ); } - bool checkIsLoginApi(DioError error) { - return isLoginApi(error.requestOptions) || + bool checkIsLoginApi(UnauthenticatedError error) { + return isLoginApi(error.requestOptions.path) || error.requestOptions.headers .containsKey(Constants.isAuthRequiredAPIKey); } - FutureOr handleUnauthenticatedUser(DioError error); - bool isLoginApi(RequestOptions requestOptions); + FutureOr handleUnauthenticatedUser(UnauthenticatedError error); + bool isLoginApi(String path); } From 0e094ff44fc270dcdc4d959333d8c3b327a25d95 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Wed, 12 Jul 2023 14:09:39 +0530 Subject: [PATCH 03/17] fix(error-interceptor): type-cast issue Signed-off-by: Taranjeet Singh --- lib/src/exceptions/errors.dart | 8 ++++++++ lib/src/interceptors/error_interceptor.dart | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/src/exceptions/errors.dart b/lib/src/exceptions/errors.dart index 355664b..536671f 100644 --- a/lib/src/exceptions/errors.dart +++ b/lib/src/exceptions/errors.dart @@ -113,6 +113,14 @@ class UnauthenticatedError extends DioException { ? response?.data : 'Unauthenticated, Please try again'; } + + UnauthenticatedError.fromDioError(DioError error) + : super( + requestOptions: error.requestOptions, + response: error.response, + type: error.type, + error: error, + ); } class UnknownApiError extends DioException { diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index 1ef7e28..d501bff 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -29,7 +29,7 @@ abstract class ErrorInterceptor extends Interceptor { if (error.type == DioExceptionType.badResponse) { final code = error.response!.statusCode; if (code == 401) { - final unauthenticatedError = error as UnauthenticatedError; + final unauthenticatedError = UnauthenticatedError.fromDioError(error); // IF headers contains key [isAuthRequired] // then not clearing auth data when 401 occurs final isLoginApi = checkIsLoginApi(unauthenticatedError); From cf46f280029c88e61a2e79d107b9adc9b444a69c Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Wed, 12 Jul 2023 14:30:04 +0530 Subject: [PATCH 04/17] doc(error-interceptor): add doc comments Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index d501bff..405c626 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -126,6 +126,10 @@ abstract class ErrorInterceptor extends Interceptor { .containsKey(Constants.isAuthRequiredAPIKey); } + /// It will be called when `401` occurs and either [isLoginApi] returns `false` + /// or [isAuthRequiredAPIKey] is not present in headers FutureOr handleUnauthenticatedUser(UnauthenticatedError error); + + /// When returned `true` it will not call [handleUnauthenticatedUser] method for that request bool isLoginApi(String path); } From 87c05974c7f9964bee6935bbfe7f2f76de8be90a Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 13 Jul 2023 12:25:13 +0530 Subject: [PATCH 05/17] refactor(error-interceptor): remove redundant isLoginApi check Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index 405c626..9b1ba08 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -121,15 +121,10 @@ abstract class ErrorInterceptor extends Interceptor { } bool checkIsLoginApi(UnauthenticatedError error) { - return isLoginApi(error.requestOptions.path) || - error.requestOptions.headers - .containsKey(Constants.isAuthRequiredAPIKey); + return error.requestOptions.headers + .containsKey(Constants.isAuthRequiredAPIKey); } - /// It will be called when `401` occurs and either [isLoginApi] returns `false` - /// or [isAuthRequiredAPIKey] is not present in headers + /// It will be called when `401` occurs and [isAuthRequiredAPIKey] is not present in headers FutureOr handleUnauthenticatedUser(UnauthenticatedError error); - - /// When returned `true` it will not call [handleUnauthenticatedUser] method for that request - bool isLoginApi(String path); } From 033da009ab8d743ad49a2bd0c6e897e23efc4ac1 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 13 Jul 2023 16:27:50 +0530 Subject: [PATCH 06/17] feat(error-interceptor): implement cancel token implementation Signed-off-by: Taranjeet Singh --- lib/src/exceptions/errors.dart | 24 ++++++++++++++++ .../cancel_request_interceptor.dart | 28 +++++++++++++++++++ lib/src/interceptors/error_interceptor.dart | 5 ++++ 3 files changed, 57 insertions(+) create mode 100644 lib/src/interceptors/cancel_request_interceptor.dart diff --git a/lib/src/exceptions/errors.dart b/lib/src/exceptions/errors.dart index 536671f..6b20fa2 100644 --- a/lib/src/exceptions/errors.dart +++ b/lib/src/exceptions/errors.dart @@ -186,3 +186,27 @@ class UnstableInternetError extends DioException { return 'Poor internet connection'; } } + +class RequestCancelError extends DioError { + RequestCancelError({ + required requestOptions, + response, + type = DioErrorType.other, + error, + }) : super( + requestOptions: requestOptions, + response: response, + type: type, + error: error, + ); + + RequestCancelError.fromDioError(DioError error) + : super( + type: error.type, + error: error.error, + requestOptions: error.requestOptions, + ); + + @override + String toString() => message; +} diff --git a/lib/src/interceptors/cancel_request_interceptor.dart b/lib/src/interceptors/cancel_request_interceptor.dart new file mode 100644 index 0000000..dd409c1 --- /dev/null +++ b/lib/src/interceptors/cancel_request_interceptor.dart @@ -0,0 +1,28 @@ +import 'package:dio/dio.dart'; + +class CancelTokenInterceptor extends Interceptor { + CancelTokenInterceptor() : appCancelToken = AppCancelToken(); + + final AppCancelToken appCancelToken; + + @override + Future onRequest( + RequestOptions options, + RequestInterceptorHandler handler, + ) async { + options.cancelToken = appCancelToken.getCancelToken(); + handler.next(options); + } +} + +class AppCancelToken { + CancelToken _cancelToken = CancelToken(); + + CancelToken getCancelToken() { + if (_cancelToken.isCancelled) { + _cancelToken = CancelToken(); + } + + return _cancelToken; + } +} diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index 9b1ba08..7d32a97 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -109,6 +109,11 @@ abstract class ErrorInterceptor extends Interceptor { ), ); } + + if (error.type == DioErrorType.cancel) { + return handler.reject(RequestCancelError.fromDioError(error)); + } + return handler.reject( UnknownApiError( requestOptions: error.requestOptions, From c5e139dcb90233fe5c0e7f1d4278a10395eca170 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 13 Jul 2023 16:38:53 +0530 Subject: [PATCH 07/17] feat(CancelTokenInterceptor): make it abstract Signed-off-by: Taranjeet Singh --- lib/src/interceptors/cancel_request_interceptor.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/src/interceptors/cancel_request_interceptor.dart b/lib/src/interceptors/cancel_request_interceptor.dart index dd409c1..6480ac4 100644 --- a/lib/src/interceptors/cancel_request_interceptor.dart +++ b/lib/src/interceptors/cancel_request_interceptor.dart @@ -1,6 +1,6 @@ import 'package:dio/dio.dart'; -class CancelTokenInterceptor extends Interceptor { +abstract class CancelTokenInterceptor extends Interceptor { CancelTokenInterceptor() : appCancelToken = AppCancelToken(); final AppCancelToken appCancelToken; @@ -10,9 +10,14 @@ class CancelTokenInterceptor extends Interceptor { RequestOptions options, RequestInterceptorHandler handler, ) async { - options.cancelToken = appCancelToken.getCancelToken(); + if (shouldAddCancelToken(options.path)) { + final cancelToken = appCancelToken.getCancelToken(); + options.cancelToken = cancelToken; + } handler.next(options); } + + bool shouldAddCancelToken(String path); } class AppCancelToken { From 1baf3e97ad1e874e49965735ac7f0de16c16a3d4 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 13 Jul 2023 16:42:49 +0530 Subject: [PATCH 08/17] refactor(cancel-token-interceptor): rename interceptor and update export files Signed-off-by: Taranjeet Singh --- lib/fa_flutter_api_client.dart | 1 + ...el_request_interceptor.dart => cancel_token_interceptor.dart} | 0 2 files changed, 1 insertion(+) rename lib/src/interceptors/{cancel_request_interceptor.dart => cancel_token_interceptor.dart} (100%) diff --git a/lib/fa_flutter_api_client.dart b/lib/fa_flutter_api_client.dart index 2fbbe14..3ed0cd1 100644 --- a/lib/fa_flutter_api_client.dart +++ b/lib/fa_flutter_api_client.dart @@ -9,3 +9,4 @@ export 'src/interceptors/logging_interceptor.dart'; export 'src/interceptors/network_interceptor.dart'; export 'src/api_options/api_options.dart'; export 'src/interceptors/cache_interceptor.dart'; +export 'src/interceptors/cancel_token_interceptor.dart'; diff --git a/lib/src/interceptors/cancel_request_interceptor.dart b/lib/src/interceptors/cancel_token_interceptor.dart similarity index 100% rename from lib/src/interceptors/cancel_request_interceptor.dart rename to lib/src/interceptors/cancel_token_interceptor.dart From 35c2a14f13b9ba3c6bcbcb3c4efd3c45bcb60384 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 13 Jul 2023 17:40:34 +0530 Subject: [PATCH 09/17] fix(errors): return error in toString Signed-off-by: Taranjeet Singh --- lib/src/exceptions/errors.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/exceptions/errors.dart b/lib/src/exceptions/errors.dart index 6b20fa2..0d8b38d 100644 --- a/lib/src/exceptions/errors.dart +++ b/lib/src/exceptions/errors.dart @@ -208,5 +208,5 @@ class RequestCancelError extends DioError { ); @override - String toString() => message; + String toString() => error; } From 3b7fdc5fdc13b1ea8cb916340ec0d5e644017992 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Fri, 14 Jul 2023 12:46:09 +0530 Subject: [PATCH 10/17] fix(error): add stacktrace info Signed-off-by: Taranjeet Singh --- lib/src/exceptions/errors.dart | 18 +++++++++++++++--- lib/src/interceptors/error_interceptor.dart | 7 ++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/src/exceptions/errors.dart b/lib/src/exceptions/errors.dart index 0d8b38d..69eff8c 100644 --- a/lib/src/exceptions/errors.dart +++ b/lib/src/exceptions/errors.dart @@ -193,6 +193,7 @@ class RequestCancelError extends DioError { response, type = DioErrorType.other, error, + this.showStackTrace = false, }) : super( requestOptions: requestOptions, response: response, @@ -200,13 +201,24 @@ class RequestCancelError extends DioError { error: error, ); - RequestCancelError.fromDioError(DioError error) - : super( + RequestCancelError.fromDioError(DioError error, bool showStackTrace) + : showStackTrace = showStackTrace, + super( type: error.type, error: error.error, requestOptions: error.requestOptions, + response: error.response, ); + /// showStackTrace true means DEV flavor + final bool showStackTrace; + @override - String toString() => error; + String toString() { + if (!showStackTrace) { + return "Error: ${response?.statusCode ?? ""} Something Went Wrong!"; + } + + return "Token Cancelled Error: ${response?.statusCode ?? ""} ${error ?? response?.statusMessage ?? ""}"; + } } diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index 7d32a97..b334219 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -111,7 +111,12 @@ abstract class ErrorInterceptor extends Interceptor { } if (error.type == DioErrorType.cancel) { - return handler.reject(RequestCancelError.fromDioError(error)); + return handler.reject( + RequestCancelError.fromDioError( + error, + showStackTrace, + ), + ); } return handler.reject( From 928c66c2dce4d7039d4963305c1fb8cafe86ecd6 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Tue, 25 Jul 2023 14:15:20 +0530 Subject: [PATCH 11/17] feat(error-interceptor): remove 300ms delay Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index b334219..bb6ac6b 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -35,9 +35,11 @@ abstract class ErrorInterceptor extends Interceptor { final isLoginApi = checkIsLoginApi(unauthenticatedError); // Delaying for 300ms so that other futures // can complete before navigating to unauthorizedScreen - Future.delayed( - const Duration(milliseconds: 300), - () { + // Future.delayed( + // const Duration(milliseconds: 300), + // () { + // }, + // ); if (!isLoginApi) { handleUnauthenticatedUser(unauthenticatedError); } @@ -49,9 +51,7 @@ abstract class ErrorInterceptor extends Interceptor { error: error.error, ), ); - }, - ); - return null; + // return null; } else if (code == 403) { return handler.reject( UnauthorizedError( From 50d58b8cec3d2c903d091b2c8044a56eca5f5005 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 10 Aug 2023 11:29:42 +0530 Subject: [PATCH 12/17] feat(refresh-token-interceptor): implement refresh token interceptor Signed-off-by: Taranjeet Singh --- lib/fa_flutter_api_client.dart | 1 + lib/src/api_service_impl.dart | 36 +++++++++++++++++-- lib/src/base/api_service.dart | 3 ++ ...efresh_token_logging_interceptor_impl.dart | 12 +++++++ lib/src/interceptors/error_interceptor.dart | 22 ++++++------ .../refresh_token_interceptor.dart | 29 +++++++++++++++ 6 files changed, 89 insertions(+), 14 deletions(-) create mode 100644 lib/src/implementations/refresh_token_logging_interceptor_impl.dart create mode 100644 lib/src/interceptors/refresh_token_interceptor.dart diff --git a/lib/fa_flutter_api_client.dart b/lib/fa_flutter_api_client.dart index 3ed0cd1..98c4a48 100644 --- a/lib/fa_flutter_api_client.dart +++ b/lib/fa_flutter_api_client.dart @@ -10,3 +10,4 @@ export 'src/interceptors/network_interceptor.dart'; export 'src/api_options/api_options.dart'; export 'src/interceptors/cache_interceptor.dart'; export 'src/interceptors/cancel_token_interceptor.dart'; +export 'src/interceptors/refresh_token_interceptor.dart'; diff --git a/lib/src/api_service_impl.dart b/lib/src/api_service_impl.dart index 0ee3d30..35babd7 100644 --- a/lib/src/api_service_impl.dart +++ b/lib/src/api_service_impl.dart @@ -2,14 +2,13 @@ import 'dart:convert'; import 'dart:io'; import 'package:dio/dio.dart'; -import 'package:fa_flutter_api_client/src/api_options/api_options.dart'; +import 'package:fa_flutter_api_client/fa_flutter_api_client.dart'; +import 'package:fa_flutter_api_client/src/implementations/refresh_token_logging_interceptor_impl.dart'; import 'package:fa_flutter_api_client/src/utils/constants.dart'; import 'package:fa_flutter_core/fa_flutter_core.dart' hide ProgressCallback; import 'package:http_parser/http_parser.dart'; import 'package:path/path.dart'; -import 'base/api_service.dart'; - class ApiServiceImpl implements ApiService { ApiServiceImpl({ required this.baseUrl, @@ -32,12 +31,21 @@ class ApiServiceImpl implements ApiService { if (interceptors != null && interceptors!.isNotEmpty) { _dioFile!.interceptors.addAll(interceptors!); } + + _refreshTokenDio = Dio(); + if (interceptors != null && interceptors!.isNotEmpty && isDebug) { + _refreshTokenDio!.interceptors.add( + RefreshTokenLoggingInterceptorImpl(), + ); + } } String baseUrl; Dio? _dio; ApiOptions? apiOptions; + Dio? _refreshTokenDio; + Dio? _dioFile; final List? interceptors; @@ -63,7 +71,20 @@ class ApiServiceImpl implements ApiService { String? url, String? body, ApiOptions? options, + bool isRefreshTokenRequest = false, }) async { + if (isRefreshTokenRequest) { + return _refreshTokenDio!.post( + url ?? '$baseUrl$endpoint', + data: body, + options: Options( + headers: _formatHeaders(options), + receiveTimeout: options?.receiveTimeout, + sendTimeout: options?.sendTimeout, + ), + ); + } + return _dio!.post(url ?? '$baseUrl$endpoint', data: body, cancelToken: options?.cancelToken, @@ -185,6 +206,15 @@ class ApiServiceImpl implements ApiService { return _dio; } + @override + Dio getRefreshTokenApiClient() { + if (_refreshTokenDio == null) { + _refreshTokenDio = Dio(); + } + + return _refreshTokenDio!; + } + @override String getIsAuthRequiredKey() => Constants.isAuthRequiredAPIKey; diff --git a/lib/src/base/api_service.dart b/lib/src/base/api_service.dart index 15c796d..4de92d7 100644 --- a/lib/src/base/api_service.dart +++ b/lib/src/base/api_service.dart @@ -17,6 +17,7 @@ abstract class ApiService { String? endpoint, String? body, ApiOptions? options, + bool isRefreshTokenRequest = false, }); Future> put({ @@ -50,6 +51,8 @@ abstract class ApiService { Dio? getApiClient(); + Dio? getRefreshTokenApiClient(); + /// get key for disabling auth for some requests. String getIsAuthRequiredKey(); diff --git a/lib/src/implementations/refresh_token_logging_interceptor_impl.dart b/lib/src/implementations/refresh_token_logging_interceptor_impl.dart new file mode 100644 index 0000000..3617a10 --- /dev/null +++ b/lib/src/implementations/refresh_token_logging_interceptor_impl.dart @@ -0,0 +1,12 @@ +import 'dart:developer'; + +import 'package:fa_flutter_api_client/fa_flutter_api_client.dart'; + +/// This is only for refresh token logging +/// Do not use it for other purposes +class RefreshTokenLoggingInterceptorImpl extends LoggingInterceptor { + @override + void logPrint(String msg) { + log(msg); + } +} diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index bb6ac6b..b5a0fd2 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -40,17 +40,17 @@ abstract class ErrorInterceptor extends Interceptor { // () { // }, // ); - if (!isLoginApi) { - handleUnauthenticatedUser(unauthenticatedError); - } - return handler.reject( - UnauthenticatedError( - requestOptions: error.requestOptions, - response: error.response, - type: error.type, - error: error.error, - ), - ); + if (!isLoginApi) { + await handleUnauthenticatedUser(unauthenticatedError); + } + return handler.reject( + UnauthenticatedError( + requestOptions: error.requestOptions, + response: error.response, + type: error.error, + error: error.error, + ), + ); // return null; } else if (code == 403) { return handler.reject( diff --git a/lib/src/interceptors/refresh_token_interceptor.dart b/lib/src/interceptors/refresh_token_interceptor.dart new file mode 100644 index 0000000..382261a --- /dev/null +++ b/lib/src/interceptors/refresh_token_interceptor.dart @@ -0,0 +1,29 @@ +import 'dart:async'; + +import 'package:dio/dio.dart'; + +abstract class RefreshTokenInterceptor extends QueuedInterceptorsWrapper { + bool isRefreshingSession = false; + + @override + FutureOr onRequest( + RequestOptions options, + RequestInterceptorHandler handler, + ) async { + try { + var updatedOptions = options; + if (isExpired(options)) { + updatedOptions = await refreshToken(options); + } + return handler.next(updatedOptions); + } catch (e) { + handler.next(options); + } + } + + /// It will be called when [isExpired] is true + /// Return the updated [RequestOptions] with new token + FutureOr refreshToken(RequestOptions options); + + bool isExpired(RequestOptions options); +} From c1a593afa9b2f00e4b3fea60ddd72624be314620 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Fri, 18 Aug 2023 19:17:15 +0530 Subject: [PATCH 13/17] fix(error-interceptor): wrong type sent in UnauthenticatedError issue Signed-off-by: Taranjeet Singh --- lib/src/interceptors/error_interceptor.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index b5a0fd2..acc6ab6 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -47,7 +47,7 @@ abstract class ErrorInterceptor extends Interceptor { UnauthenticatedError( requestOptions: error.requestOptions, response: error.response, - type: error.error, + type: error.type, error: error.error, ), ); From 4948b2c4c1e3d5cb85350b1d214085cb301334fa Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Fri, 25 Aug 2023 16:01:11 +0530 Subject: [PATCH 14/17] feat(upgrade): use DioException instead of DioError Signed-off-by: Taranjeet Singh --- lib/src/exceptions/errors.dart | 8 ++++---- lib/src/interceptors/error_interceptor.dart | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/src/exceptions/errors.dart b/lib/src/exceptions/errors.dart index 69eff8c..c2acda7 100644 --- a/lib/src/exceptions/errors.dart +++ b/lib/src/exceptions/errors.dart @@ -114,7 +114,7 @@ class UnauthenticatedError extends DioException { : 'Unauthenticated, Please try again'; } - UnauthenticatedError.fromDioError(DioError error) + UnauthenticatedError.fromDioError(DioException error) : super( requestOptions: error.requestOptions, response: error.response, @@ -187,11 +187,11 @@ class UnstableInternetError extends DioException { } } -class RequestCancelError extends DioError { +class RequestCancelError extends DioException { RequestCancelError({ required requestOptions, response, - type = DioErrorType.other, + type = DioExceptionType.unknown, error, this.showStackTrace = false, }) : super( @@ -201,7 +201,7 @@ class RequestCancelError extends DioError { error: error, ); - RequestCancelError.fromDioError(DioError error, bool showStackTrace) + RequestCancelError.fromDioError(DioException error, bool showStackTrace) : showStackTrace = showStackTrace, super( type: error.type, diff --git a/lib/src/interceptors/error_interceptor.dart b/lib/src/interceptors/error_interceptor.dart index acc6ab6..3f484fd 100644 --- a/lib/src/interceptors/error_interceptor.dart +++ b/lib/src/interceptors/error_interceptor.dart @@ -110,7 +110,7 @@ abstract class ErrorInterceptor extends Interceptor { ); } - if (error.type == DioErrorType.cancel) { + if (error.type == DioExceptionType.cancel) { return handler.reject( RequestCancelError.fromDioError( error, From b50602825033c3f2860890608d15a24d030be227 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Thu, 31 Aug 2023 19:12:11 +0530 Subject: [PATCH 15/17] fix(dependency): use main-new Signed-off-by: Taranjeet Singh --- example2/pubspec.yaml | 2 +- pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example2/pubspec.yaml b/example2/pubspec.yaml index 00afd21..9d31d3e 100644 --- a/example2/pubspec.yaml +++ b/example2/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: fa_flutter_core: git: url: https://github.com/FieldAssist/fa_flutter_core.git - ref: main + ref: main-new dev_dependencies: flutter_test: diff --git a/pubspec.yaml b/pubspec.yaml index 5ace450..59823e8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: fa_flutter_core: git: url: https://github.com/FieldAssist/fa_flutter_core.git - ref: main + ref: main-new dev_dependencies: flutter_test: From 31e296996ef79e54ad590587a04ab9dc5316b923 Mon Sep 17 00:00:00 2001 From: Abhishek Saini <78199221+Abhisheksainii@users.noreply.github.com> Date: Thu, 7 Dec 2023 15:24:40 +0530 Subject: [PATCH 16/17] feat(api-service): addition of patch method in api-service helper --- example2/lib/di/injector.dart | 9 +++++---- lib/src/api_service_impl.dart | 15 +++++++++++++++ lib/src/base/api_service.dart | 6 ++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/example2/lib/di/injector.dart b/example2/lib/di/injector.dart index ac2b851..7cc521d 100644 --- a/example2/lib/di/injector.dart +++ b/example2/lib/di/injector.dart @@ -1,10 +1,11 @@ -import 'package:example2/interceptor/auth_interceptor.dart'; -import 'package:example2/interceptor/logging_interceptor.dart'; -import 'package:example2/interceptor/network/network_info.dart'; -import 'package:example2/interceptor/network_interceptor.dart'; import 'package:fa_flutter_api_client/fa_flutter_api_client.dart'; import 'package:fa_flutter_core/fa_flutter_core.dart'; +import '../interceptor/auth_interceptor.dart'; +import '../interceptor/logging_interceptor.dart'; +import '../interceptor/network/network_info.dart'; +import '../interceptor/network_interceptor.dart'; + const _debugBaseUrl = 'https://fa-maapins-debug.fieldassist.io/api/'; final locator = GetIt.instance; diff --git a/lib/src/api_service_impl.dart b/lib/src/api_service_impl.dart index 35babd7..1d07d33 100644 --- a/lib/src/api_service_impl.dart +++ b/lib/src/api_service_impl.dart @@ -125,6 +125,21 @@ class ApiServiceImpl implements ApiService { )); } + @override + Future> patch({ + String? endpoint, + String? body, + ApiOptions? options, + }) async { + return _dio!.patch('$baseUrl$endpoint', + data: body, + options: Options( + headers: _formatHeaders(options), + receiveTimeout: options?.receiveTimeout, + sendTimeout: options?.sendTimeout, + )); + } + @override Future> postFile({ String? endpoint, diff --git a/lib/src/base/api_service.dart b/lib/src/base/api_service.dart index 4de92d7..6bdbb2d 100644 --- a/lib/src/base/api_service.dart +++ b/lib/src/base/api_service.dart @@ -31,6 +31,12 @@ abstract class ApiService { ApiOptions? options, }); + Future> patch({ + String? endpoint, + String? body, + ApiOptions? options, + }); + Future> postFile({ String? endpoint, String? url, From 61b0cb6bf0d705e567206653c517de442f115650 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Date: Mon, 8 Jan 2024 13:38:21 +0530 Subject: [PATCH 17/17] fix(pubspec): update dependencies and use main instead of main-new Signed-off-by: Taranjeet Singh --- example2/pubspec.lock | 1460 ----------------------------------------- example2/pubspec.yaml | 4 +- pubspec.lock | 90 +-- pubspec.yaml | 2 +- 4 files changed, 48 insertions(+), 1508 deletions(-) delete mode 100644 example2/pubspec.lock diff --git a/example2/pubspec.lock b/example2/pubspec.lock deleted file mode 100644 index e0ef8c1..0000000 --- a/example2/pubspec.lock +++ /dev/null @@ -1,1460 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: e4be6711f96d3d4eebe79728897d645b7a5585bbfdd6d534878d202c171266d7 - url: "https://pub.dev" - source: hosted - version: "1.3.34" - ansicolor: - dependency: transitive - description: - name: ansicolor - sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - archive: - dependency: transitive - description: - name: archive - sha256: "6bd38d335f0954f5fad9c79e614604fbf03a0e5b975923dd001b6ea965ef5b4b" - url: "https://pub.dev" - source: hosted - version: "3.6.0" - args: - dependency: transitive - description: - name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" - url: "https://pub.dev" - source: hosted - version: "2.5.0" - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - bot_toast: - dependency: transitive - description: - name: bot_toast - sha256: "6b93030a99a98335b8827ecd83021e92e885ffc61d261d3825ffdecdd17f3bdf" - url: "https://pub.dev" - source: hosted - version: "4.1.3" - cached_network_image: - dependency: transitive - description: - name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" - url: "https://pub.dev" - source: hosted - version: "3.3.1" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - camera: - dependency: transitive - description: - name: camera - sha256: dfa8fc5a1adaeb95e7a54d86a5bd56f4bb0e035515354c8ac6d262e35cec2ec8 - url: "https://pub.dev" - source: hosted - version: "0.10.6" - camera_android: - dependency: transitive - description: - name: camera_android - sha256: b350ac087f111467e705b2b76cc1322f7f5bdc122aa83b4b243b0872f390d229 - url: "https://pub.dev" - source: hosted - version: "0.10.9+2" - camera_avfoundation: - dependency: transitive - description: - name: camera_avfoundation - sha256: "7d021e8cd30d9b71b8b92b4ad669e80af432d722d18d6aac338572754a786c15" - url: "https://pub.dev" - source: hosted - version: "0.9.16" - camera_platform_interface: - dependency: transitive - description: - name: camera_platform_interface - sha256: a250314a48ea337b35909a4c9d5416a208d736dcb01d0b02c6af122be66660b0 - url: "https://pub.dev" - source: hosted - version: "2.7.4" - camera_web: - dependency: transitive - description: - name: camera_web - sha256: "9e9aba2fbab77ce2472924196ff8ac4dd8f9126c4f9a3096171cd1d870d6b26c" - url: "https://pub.dev" - source: hosted - version: "0.3.3" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a - url: "https://pub.dev" - source: hosted - version: "1.18.0" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" - url: "https://pub.dev" - source: hosted - version: "0.3.4+1" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - dartx: - dependency: transitive - description: - name: dartx - sha256: "8b25435617027257d43e6508b5fe061012880ddfdaa75a71d607c3de2a13d244" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - device_info_plus: - dependency: transitive - description: - name: device_info_plus - sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 - url: "https://pub.dev" - source: hosted - version: "10.1.0" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.dev" - source: hosted - version: "7.0.0" - device_information: - dependency: transitive - description: - name: device_information - sha256: "26dd2630a9db8e0c55f5685a5d515ed40ded24219f5e7f14dcfae5a2bd1f2ddf" - url: "https://pub.dev" - source: hosted - version: "0.0.4" - dio: - dependency: transitive - description: - name: dio - sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5" - url: "https://pub.dev" - source: hosted - version: "5.4.3+1" - equatable: - dependency: transitive - description: - name: equatable - sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 - url: "https://pub.dev" - source: hosted - version: "2.0.5" - expressions: - dependency: transitive - description: - name: expressions - sha256: "0a3a207dc4697bbb0e17c731c7f10f2df6f88d9dbb99ac83c4168a10b57e7a20" - url: "https://pub.dev" - source: hosted - version: "0.2.5+1" - fa_dart_core: - dependency: transitive - description: - path: "." - ref: main - resolved-ref: "475d6dd94c850839e649ef40332aa30888712c0b" - url: "https://github.com/FieldAssist/fa_dart_core.git" - source: git - version: "2.0.0+2" - fa_dart_logger: - dependency: transitive - description: - path: "." - ref: main - resolved-ref: e813a4731922cb31d3fd011eb0d79b8a6b3e8e49 - url: "https://github.com/FieldAssist/fa_dart_logger.git" - source: git - version: "1.0.0" - fa_flutter_api_client: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "2.0.1" - fa_flutter_core: - dependency: "direct main" - description: - path: "." - ref: main - resolved-ref: "837183dd67f7333c485ed1bacab758c7d97ea920" - url: "https://github.com/FieldAssist/fa_flutter_core.git" - source: git - version: "2.0.2" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - file: - dependency: transitive - description: - name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" - url: "https://pub.dev" - source: hosted - version: "0.9.2+1" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 - url: "https://pub.dev" - source: hosted - version: "0.9.4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.dev" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 - url: "https://pub.dev" - source: hosted - version: "0.9.3+1" - firebase_analytics: - dependency: transitive - description: - name: firebase_analytics - sha256: "08f98034f51c8018d08cd56ac51f44c63ab684f85a7b8f0ede92c4acfb23a2bc" - url: "https://pub.dev" - source: hosted - version: "10.10.6" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "4de04e25bd739184eb2cfcd76c2f336c9e03bf65457e1e17d027d65f2344a2df" - url: "https://pub.dev" - source: hosted - version: "3.10.7" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: "77ded8cb214193cc816395625ab8a031539cdd870d667123d1b9d53c7303a82d" - url: "https://pub.dev" - source: hosted - version: "0.5.7+6" - firebase_core: - dependency: transitive - description: - name: firebase_core - sha256: "4b5100e2dbc3fe72c2d4241a046d3f01457fe11293283a324f5c52575e3406f8" - url: "https://pub.dev" - source: hosted - version: "2.31.1" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 - url: "https://pub.dev" - source: hosted - version: "5.0.0" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" - url: "https://pub.dev" - source: hosted - version: "2.17.0" - firebase_crashlytics: - dependency: transitive - description: - name: firebase_crashlytics - sha256: a67dd0c9fe65a3615c9239d189b0c6f4f2a76e17eb945c5a4b688dff8dd21f86 - url: "https://pub.dev" - source: hosted - version: "3.5.6" - firebase_crashlytics_platform_interface: - dependency: transitive - description: - name: firebase_crashlytics_platform_interface - sha256: fc31c00e24ef7b091da8dfd2e7c9dc205f8ca343f68825c15ac8d702e015aec9 - url: "https://pub.dev" - source: hosted - version: "3.6.34" - firebase_messaging: - dependency: transitive - description: - name: firebase_messaging - sha256: "62c27bd7c9c724b5ee5fd52e06224b8861d6e692f08b3d7bc3ada28552f27d41" - url: "https://pub.dev" - source: hosted - version: "14.9.3" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: f73e9fe4bc25307520b714cec39a2e1a625c64511d497964f3e06c5d60146948 - url: "https://pub.dev" - source: hosted - version: "4.5.36" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: "5ed108929f988d55c497f1456ad5e407501a746869306f058b6d2b2e704790f3" - url: "https://pub.dev" - source: hosted - version: "3.8.6" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - flare_flutter: - dependency: transitive - description: - name: flare_flutter - sha256: "99d63c60f00fac81249ce6410ee015d7b125c63d8278a30da81edf3317a1f6a0" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "395d6b7831f21f3b989ebedbb785545932adb9afe2622c1ffacf7f4b53a7e544" - url: "https://pub.dev" - source: hosted - version: "3.3.2" - flutter_keyboard_visibility: - dependency: transitive - description: - name: flutter_keyboard_visibility - sha256: "98664be7be0e3ffca00de50f7f6a287ab62c763fc8c762e0a21584584a3ff4f8" - url: "https://pub.dev" - source: hosted - version: "6.0.0" - flutter_keyboard_visibility_linux: - dependency: transitive - description: - name: flutter_keyboard_visibility_linux - sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_macos: - dependency: transitive - description: - name: flutter_keyboard_visibility_macos - sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_platform_interface: - dependency: transitive - description: - name: flutter_keyboard_visibility_platform_interface - sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4 - url: "https://pub.dev" - source: hosted - version: "2.0.0" - flutter_keyboard_visibility_web: - dependency: transitive - description: - name: flutter_keyboard_visibility_web - sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1 - url: "https://pub.dev" - source: hosted - version: "2.0.0" - flutter_keyboard_visibility_windows: - dependency: transitive - description: - name: flutter_keyboard_visibility_windows - sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" - url: "https://pub.dev" - source: hosted - version: "2.0.19" - flutter_svg: - dependency: transitive - description: - name: flutter_svg - sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" - url: "https://pub.dev" - source: hosted - version: "2.0.10+1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - font_awesome_flutter: - dependency: transitive - description: - name: font_awesome_flutter - sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f" - url: "https://pub.dev" - source: hosted - version: "10.7.0" - freezed_annotation: - dependency: transitive - description: - name: freezed_annotation - sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d - url: "https://pub.dev" - source: hosted - version: "2.4.1" - geocoding: - dependency: transitive - description: - name: geocoding - sha256: d580c801cba9386b4fac5047c4c785a4e19554f46be42f4f5e5b7deacd088a66 - url: "https://pub.dev" - source: hosted - version: "3.0.0" - geocoding_android: - dependency: transitive - description: - name: geocoding_android - sha256: "1b13eca79b11c497c434678fed109c2be020b158cec7512c848c102bc7232603" - url: "https://pub.dev" - source: hosted - version: "3.3.1" - geocoding_ios: - dependency: transitive - description: - name: geocoding_ios - sha256: "94ddba60387501bd1c11e18dca7c5a9e8c645d6e3da9c38b9762434941870c24" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - geocoding_platform_interface: - dependency: transitive - description: - name: geocoding_platform_interface - sha256: "8c2c8226e5c276594c2e18bfe88b19110ed770aeb7c1ab50ede570be8b92229b" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - geolocator: - dependency: transitive - description: - name: geolocator - sha256: "6cb9fb6e5928b58b9a84bdf85012d757fd07aab8215c5205337021c4999bad27" - url: "https://pub.dev" - source: hosted - version: "11.1.0" - geolocator_android: - dependency: transitive - description: - name: geolocator_android - sha256: "00c7177a95823dd3ee35ef42fd8666cd27d219ae14cea472ac76a21dff43000b" - url: "https://pub.dev" - source: hosted - version: "4.6.0" - geolocator_apple: - dependency: transitive - description: - name: geolocator_apple - sha256: bc2aca02423ad429cb0556121f56e60360a2b7d694c8570301d06ea0c00732fd - url: "https://pub.dev" - source: hosted - version: "2.3.7" - geolocator_platform_interface: - dependency: transitive - description: - name: geolocator_platform_interface - sha256: c6005787efe9e27cb0f6b50230c217e6f0ef8e1e7a8b854efb4f46489e502603 - url: "https://pub.dev" - source: hosted - version: "4.2.3" - geolocator_web: - dependency: transitive - description: - name: geolocator_web - sha256: "49d8f846ebeb5e2b6641fe477a7e97e5dd73f03cbfef3fd5c42177b7300fb0ed" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - geolocator_windows: - dependency: transitive - description: - name: geolocator_windows - sha256: "53da08937d07c24b0d9952eb57a3b474e29aae2abf9dd717f7e1230995f13f0e" - url: "https://pub.dev" - source: hosted - version: "0.2.3" - get_it: - dependency: transitive - description: - name: get_it - sha256: d85128a5dae4ea777324730dc65edd9c9f43155c109d5cc0a69cab74139fbac1 - url: "https://pub.dev" - source: hosted - version: "7.7.0" - google_maps: - dependency: transitive - description: - name: google_maps - sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a" - url: "https://pub.dev" - source: hosted - version: "7.1.0" - google_maps_flutter: - dependency: transitive - description: - name: google_maps_flutter - sha256: c1972cbad779bc5346c49045f26ae45550a0958b1cbca5b524dd3c8954995d28 - url: "https://pub.dev" - source: hosted - version: "2.6.1" - google_maps_flutter_android: - dependency: transitive - description: - name: google_maps_flutter_android - sha256: "0bcadb80eba39afda77dede89a6caafd3b68f2786b90491eceea4a01c3db181c" - url: "https://pub.dev" - source: hosted - version: "2.8.0" - google_maps_flutter_ios: - dependency: transitive - description: - name: google_maps_flutter_ios - sha256: e5132d17f051600d90d79d9f574b177c24231da702453a036db2490f9ced4646 - url: "https://pub.dev" - source: hosted - version: "2.6.0" - google_maps_flutter_platform_interface: - dependency: transitive - description: - name: google_maps_flutter_platform_interface - sha256: "2f3a3a3d03df5618e6d2320c3a6f09997ec517c3e9695e377b840f4abea83562" - url: "https://pub.dev" - source: hosted - version: "2.7.0" - google_maps_flutter_web: - dependency: transitive - description: - name: google_maps_flutter_web - sha256: "0c0d5c723d94b295cf86dd1c45ff91d2ac1fff7c05ddca4f01bef9fa0a014690" - url: "https://pub.dev" - source: hosted - version: "0.5.7" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" - http: - dependency: transitive - description: - name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - idb_shim: - dependency: transitive - description: - name: idb_shim - sha256: "0566abfc41fa38889a4575f371d54860f069a7bcf6fcfdf8cf6a242e9d5e248f" - url: "https://pub.dev" - source: hosted - version: "2.4.1+1" - image_picker: - dependency: transitive - description: - name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "0f57fee1e8bfadf8cc41818bbcd7f72e53bb768a54d9496355d5e8a5681a19f1" - url: "https://pub.dev" - source: hosted - version: "0.8.12+1" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" - url: "https://pub.dev" - source: hosted - version: "3.0.4" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: "4824d8c7f6f89121ef0122ff79bb00b009607faecc8545b86bca9ab5ce1e95bf" - url: "https://pub.dev" - source: hosted - version: "0.8.11+2" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - in_app_update: - dependency: transitive - description: - name: in_app_update - sha256: b6ccb757281a96a4b18536f68fe2567aeca865134218719364212da8fe94615c - url: "https://pub.dev" - source: hosted - version: "4.2.2" - internet_connection_checker: - dependency: transitive - description: - name: internet_connection_checker - sha256: "1c683e63e89c9ac66a40748b1b20889fd9804980da732bf2b58d6d5456c8e876" - url: "https://pub.dev" - source: hosted - version: "1.0.0+1" - intl: - dependency: transitive - description: - name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf - url: "https://pub.dev" - source: hosted - version: "0.19.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - js_wrapping: - dependency: transitive - description: - name: js_wrapping - sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c - url: "https://pub.dev" - source: hosted - version: "0.7.4" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" - source: hosted - version: "4.9.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" - url: "https://pub.dev" - source: hosted - version: "10.0.0" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - logger: - dependency: transitive - description: - name: logger - sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - lottie: - dependency: transitive - description: - name: lottie - sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b" - url: "https://pub.dev" - source: hosted - version: "3.1.2" - matcher: - dependency: transitive - description: - name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb - url: "https://pub.dev" - source: hosted - version: "0.12.16+1" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - meta: - dependency: transitive - description: - name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - mime: - dependency: transitive - description: - name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" - url: "https://pub.dev" - source: hosted - version: "1.0.5" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: cb44f49b6e690fa766f023d5b22cac6b9affe741dd792b6ac7ad4fabe0d7b097 - url: "https://pub.dev" - source: hosted - version: "6.0.0" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - path: - dependency: transitive - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.dev" - source: hosted - version: "1.0.1" - path_provider: - dependency: transitive - description: - name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 - url: "https://pub.dev" - source: hosted - version: "2.1.3" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d - url: "https://pub.dev" - source: hosted - version: "2.2.4" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 - url: "https://pub.dev" - source: hosted - version: "2.4.0" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" - platform: - dependency: transitive - description: - name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" - url: "https://pub.dev" - source: hosted - version: "3.1.4" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" - source: hosted - version: "2.1.8" - provider: - dependency: transitive - description: - name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c - url: "https://pub.dev" - source: hosted - version: "6.1.2" - quiver: - dependency: transitive - description: - name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.dev" - source: hosted - version: "3.2.1" - recase: - dependency: transitive - description: - name: recase - sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 - url: "https://pub.dev" - source: hosted - version: "4.1.0" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" - source: hosted - version: "0.27.7" - sanitize_html: - dependency: transitive - description: - name: sanitize_html - sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - screenshot: - dependency: transitive - description: - name: screenshot - sha256: "5488135006b34529bf3765a7b1900ca94ccafca300c573550a0474a7162ebf95" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - scrollable_positioned_list: - dependency: transitive - description: - name: scrollable_positioned_list - sha256: "1b54d5f1329a1e263269abc9e2543d90806131aa14fe7c6062a8054d57249287" - url: "https://pub.dev" - source: hosted - version: "0.3.8" - sembast: - dependency: transitive - description: - name: sembast - sha256: dbe19600cff55d43f19405be79138c3fd2c08a87b0b152b18609b9427d113a64 - url: "https://pub.dev" - source: hosted - version: "3.7.1" - sembast_web: - dependency: transitive - description: - name: sembast_web - sha256: e9a7209c279e9ef05d36118152189a9d901c363fb10216dae256e7ce5d78eddb - url: "https://pub.dev" - source: hosted - version: "2.3.0" - shared_preferences: - dependency: transitive - description: - name: shared_preferences - sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 - url: "https://pub.dev" - source: hosted - version: "2.2.3" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2" - url: "https://pub.dev" - source: hosted - version: "2.2.2" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - shimmer: - dependency: transitive - description: - name: shimmer - sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - sizer: - dependency: transitive - description: - name: sizer - sha256: d2b3cb6cbc4a637f508dacd786bae55df31e5fc088044248a43e4fd1e050c117 - url: "https://pub.dev" - source: hosted - version: "2.0.15" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d - url: "https://pub.dev" - source: hosted - version: "2.3.3+1" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" - url: "https://pub.dev" - source: hosted - version: "2.5.4" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" - url: "https://pub.dev" - source: hosted - version: "1.11.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 - url: "https://pub.dev" - source: hosted - version: "2.1.2" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" - url: "https://pub.dev" - source: hosted - version: "3.1.0+1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" - url: "https://pub.dev" - source: hosted - version: "0.6.1" - time: - dependency: transitive - description: - name: time - sha256: ad8e018a6c9db36cb917a031853a1aae49467a93e0d464683e029537d848c221 - url: "https://pub.dev" - source: hosted - version: "2.1.4" - timelines: - dependency: transitive - description: - name: timelines - sha256: "40214f5ab772ff45459cb8c15e5f60505a6828af0c0eb1eec6f29ed911a4c1c5" - url: "https://pub.dev" - source: hosted - version: "0.1.0" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - universal_io: - dependency: transitive - description: - name: universal_io - sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" - url: "https://pub.dev" - source: hosted - version: "2.2.2" - url_launcher: - dependency: transitive - description: - name: url_launcher - sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" - url: "https://pub.dev" - source: hosted - version: "6.2.6" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" - url: "https://pub.dev" - source: hosted - version: "6.3.2" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" - url: "https://pub.dev" - source: hosted - version: "6.3.0" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 - url: "https://pub.dev" - source: hosted - version: "3.1.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 - url: "https://pub.dev" - source: hosted - version: "3.1.1" - uuid: - dependency: transitive - description: - name: uuid - sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" - url: "https://pub.dev" - source: hosted - version: "4.4.0" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 - url: "https://pub.dev" - source: hosted - version: "13.0.0" - web: - dependency: transitive - description: - name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" - url: "https://pub.dev" - source: hosted - version: "0.5.1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522" - url: "https://pub.dev" - source: hosted - version: "4.8.0" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "2282ba2320af34b2bd5320156c664d73f3f022341ed78847bc87723bf88c142f" - url: "https://pub.dev" - source: hosted - version: "3.16.2" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d - url: "https://pub.dev" - source: hosted - version: "2.10.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: "7affdf9d680c015b11587181171d3cad8093e449db1f7d9f0f08f4f33d24f9a0" - url: "https://pub.dev" - source: hosted - version: "3.13.1" - win32: - dependency: transitive - description: - name: win32 - sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" - url: "https://pub.dev" - source: hosted - version: "5.5.0" - win32_registry: - dependency: transitive - description: - name: win32_registry - sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d - url: "https://pub.dev" - source: hosted - version: "1.0.4" - xml: - dependency: transitive - description: - name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://pub.dev" - source: hosted - version: "6.5.0" -sdks: - dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.0" diff --git a/example2/pubspec.yaml b/example2/pubspec.yaml index 9d31d3e..fe0e660 100644 --- a/example2/pubspec.yaml +++ b/example2/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.12.0 <4.0.0" dependencies: flutter: @@ -36,7 +36,7 @@ dependencies: fa_flutter_core: git: url: https://github.com/FieldAssist/fa_flutter_core.git - ref: main-new + ref: main dev_dependencies: flutter_test: diff --git a/pubspec.lock b/pubspec.lock index 93685a5..9a3447a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: e4be6711f96d3d4eebe79728897d645b7a5585bbfdd6d534878d202c171266d7 + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.34" + version: "1.3.35" ansicolor: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: archive - sha256: "6bd38d335f0954f5fad9c79e614604fbf03a0e5b975923dd001b6ea965ef5b4b" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d url: "https://pub.dev" source: hosted - version: "3.6.0" + version: "3.6.1" args: dependency: transitive description: @@ -230,7 +230,7 @@ packages: description: path: "." ref: main - resolved-ref: "475d6dd94c850839e649ef40332aa30888712c0b" + resolved-ref: "0270c3dcaa5d15b739c08a2b90d2e22cd477e81a" url: "https://github.com/FieldAssist/fa_dart_core.git" source: git version: "2.0.0+2" @@ -312,90 +312,90 @@ packages: dependency: transitive description: name: firebase_analytics - sha256: "08f98034f51c8018d08cd56ac51f44c63ab684f85a7b8f0ede92c4acfb23a2bc" + sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 url: "https://pub.dev" source: hosted - version: "10.10.6" + version: "10.10.7" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "4de04e25bd739184eb2cfcd76c2f336c9e03bf65457e1e17d027d65f2344a2df" + sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" url: "https://pub.dev" source: hosted - version: "3.10.7" + version: "3.10.8" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "77ded8cb214193cc816395625ab8a031539cdd870d667123d1b9d53c7303a82d" + sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" url: "https://pub.dev" source: hosted - version: "0.5.7+6" + version: "0.5.7+7" firebase_core: dependency: transitive description: name: firebase_core - sha256: "4b5100e2dbc3fe72c2d4241a046d3f01457fe11293283a324f5c52575e3406f8" + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "2.31.1" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 + sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" + sha256: "6643fe3dbd021e6ccfb751f7882b39df355708afbdeb4130fc50f9305a9d1a3d" url: "https://pub.dev" source: hosted - version: "2.17.0" + version: "2.17.2" firebase_crashlytics: dependency: transitive description: name: firebase_crashlytics - sha256: a67dd0c9fe65a3615c9239d189b0c6f4f2a76e17eb945c5a4b688dff8dd21f86 + sha256: "9897c01efaa950d2f6da8317d12452749a74dc45f33b46390a14cfe28067f271" url: "https://pub.dev" source: hosted - version: "3.5.6" + version: "3.5.7" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: fc31c00e24ef7b091da8dfd2e7c9dc205f8ca343f68825c15ac8d702e015aec9 + sha256: "16a71e08fbf6e00382816e1b13397898c29a54fa0ad969c2c2a3b82a704877f0" url: "https://pub.dev" source: hosted - version: "3.6.34" + version: "3.6.35" firebase_messaging: dependency: transitive description: name: firebase_messaging - sha256: "62c27bd7c9c724b5ee5fd52e06224b8861d6e692f08b3d7bc3ada28552f27d41" + sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 url: "https://pub.dev" source: hosted - version: "14.9.3" + version: "14.9.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: f73e9fe4bc25307520b714cec39a2e1a625c64511d497964f3e06c5d60146948 + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" url: "https://pub.dev" source: hosted - version: "4.5.36" + version: "4.5.37" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "5ed108929f988d55c497f1456ad5e407501a746869306f058b6d2b2e704790f3" + sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" url: "https://pub.dev" source: hosted - version: "3.8.6" + version: "3.8.7" fixnum: dependency: transitive description: @@ -631,26 +631,26 @@ packages: dependency: transitive description: name: google_maps_flutter_ios - sha256: e5132d17f051600d90d79d9f574b177c24231da702453a036db2490f9ced4646 + sha256: d2d63ae17297a5b045ec115572c5a86fa4e53bb6eceaa0c6d200ac5ca69bfca4 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: "2f3a3a3d03df5618e6d2320c3a6f09997ec517c3e9695e377b840f4abea83562" + sha256: "2bf21aa97edba4461282af5de693b354e589d09f695f7a6f80437d084a29687e" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.7.1" google_maps_flutter_web: dependency: transitive description: name: google_maps_flutter_web - sha256: "0c0d5c723d94b295cf86dd1c45ff91d2ac1fff7c05ddca4f01bef9fa0a014690" + sha256: f3155c12119d8a5c2732fdf39ceb5cc095bc662059a03b4ea23294ecebe1d199 url: "https://pub.dev" source: hosted - version: "0.5.7" + version: "0.5.8" html: dependency: transitive description: @@ -687,10 +687,10 @@ packages: dependency: transitive description: name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" image_picker_android: dependency: transitive description: @@ -711,10 +711,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: "4824d8c7f6f89121ef0122ff79bb00b009607faecc8545b86bca9ab5ce1e95bf" + sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" url: "https://pub.dev" source: hosted - version: "0.8.11+2" + version: "0.8.12" image_picker_linux: dependency: transitive description: @@ -751,10 +751,10 @@ packages: dependency: transitive description: name: in_app_update - sha256: b6ccb757281a96a4b18536f68fe2567aeca865134218719364212da8fe94615c + sha256: "489572accaa55b51518b2d64676ca8c3c6d4c989fa53cf718001882237691a3c" url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.2.3" internet_connection_checker: dependency: transitive description: @@ -975,10 +975,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: @@ -1260,10 +1260,10 @@ packages: dependency: transitive description: name: url_launcher - sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.2.6" + version: "6.3.0" url_launcher_android: dependency: transitive description: @@ -1388,10 +1388,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: "2282ba2320af34b2bd5320156c664d73f3f022341ed78847bc87723bf88c142f" + sha256: "0d21cfc3bfdd2e30ab2ebeced66512b91134b39e72e97b43db2d47dda1c4e53a" url: "https://pub.dev" source: hosted - version: "3.16.2" + version: "3.16.3" webview_flutter_platform_interface: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 59823e8..5ace450 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: fa_flutter_core: git: url: https://github.com/FieldAssist/fa_flutter_core.git - ref: main-new + ref: main dev_dependencies: flutter_test: