diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index adb2b8d..0c8d1f7 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"geocoding_ios","path":"/home/vjrj/.pub-cache/hosted/pub.dev/geocoding_ios-2.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.6.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_ios-6.4.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"geocoding_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/geocoding_android-3.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.22/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.21/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.28/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.6.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":false,"dependencies":["url_launcher_linux"],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":["url_launcher_windows"],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","dependencies":[],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core_web-2.17.5/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.8.7/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"location_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location_web-4.2.0/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","dependencies":["url_launcher_web"],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.2/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"geocoding","dependencies":["geocoding_android","geocoding_ios"]},{"name":"geocoding_android","dependencies":[]},{"name":"geocoding_ios","dependencies":[]},{"name":"in_app_review","dependencies":[]},{"name":"location","dependencies":["location_web"]},{"name":"location_web","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"sentry_flutter","dependencies":["package_info_plus"]},{"name":"share_plus","dependencies":["url_launcher_web","url_launcher_windows","url_launcher_linux"]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-03-06 11:25:54.095254","version":"3.41.2","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"geocoding_ios","path":"/home/vjrj/.pub-cache/hosted/pub.dev/geocoding_ios-2.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.6.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_ios-6.4.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"geocoding_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/geocoding_android-3.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.22/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.21/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.28/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"in_app_review","path":"/home/vjrj/.pub-cache/hosted/pub.dev/in_app_review-2.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"location","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location-5.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.6.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":false,"dependencies":["url_launcher_linux"],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_core","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core-2.32.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","native_build":true,"dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","native_build":true,"dependencies":["url_launcher_windows"],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/connectivity_plus-5.0.2/","dependencies":[],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_core_web-2.17.5/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.8.7/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"location_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/location_web-4.2.0/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/package_info_plus-6.0.0/","dependencies":[],"dev_dependency":false},{"name":"sentry_flutter","path":"/home/vjrj/.pub-cache/hosted/pub.dev/sentry_flutter-7.20.2/","dependencies":["package_info_plus"],"dev_dependency":false},{"name":"share_plus","path":"/home/vjrj/.pub-cache/hosted/pub.dev/share_plus-7.2.2/","dependencies":["url_launcher_web"],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/vjrj/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.2/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"geocoding","dependencies":["geocoding_android","geocoding_ios"]},{"name":"geocoding_android","dependencies":[]},{"name":"geocoding_ios","dependencies":[]},{"name":"in_app_review","dependencies":[]},{"name":"location","dependencies":["location_web"]},{"name":"location_web","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"sentry_flutter","dependencies":["package_info_plus"]},{"name":"share_plus","dependencies":["url_launcher_web","url_launcher_windows","url_launcher_linux"]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-03-06 15:47:44.481344","version":"3.41.2","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml index 2ae1b05..3d8d4c1 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -56,7 +56,7 @@ linter: - avoid_unused_constructor_parameters - avoid_void_async - await_only_futures - + # Naming conventions - camel_case_extensions - camel_case_types @@ -67,7 +67,7 @@ linter: - non_constant_identifier_names - package_names - package_prefixed_library_names - + # Code quality and style - cast_nullable_to_non_nullable - control_flow_in_finally @@ -96,7 +96,7 @@ linter: - null_closures - only_throw_errors - overridden_fields - + # Preferences and improvements - prefer_adjacent_string_concatenation - prefer_asserts_in_initializer_lists @@ -174,4 +174,3 @@ linter: - use_test_throws_matchers - valid_regexps - void_checks - - avoid_flutter_imports diff --git a/android/app/build.gradle b/android/app/build.gradle index 2267698..8162eb5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'dev.flutter.flutter-gradle-plugin' +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,27 +12,12 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -plugins { - id 'com.android.application' - id 'kotlin-android' -} - def keystorePropertiesFile = rootProject.file("key.properties") def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) -// Load Flutter's Gradle plugin -if (flutterRoot != null) { - apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" -} - android { - compileSdkVersion 34 + compileSdkVersion 36 namespace "org.comunes.fires" lintOptions { @@ -37,7 +28,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "org.comunes.fires" minSdkVersion flutter.minSdkVersion - targetSdkVersion 34 + targetSdkVersion 36 versionCode 9 versionName "1.9" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -57,7 +48,7 @@ android { signingConfig signingConfigs.release minifyEnabled true - useProguard true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index a3750d3..e92128d 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -14,3 +14,6 @@ -keepnames class org.ietf.jgss.** { *; } -dontwarn org.apache.** -dontwarn org.w3c.dom.** + +# Google Play Core libraries - optional features +-dontwarn com.google.android.play.core.** diff --git a/android/build.gradle b/android/build.gradle index 5ef8501..3ba0664 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,7 +1,7 @@ buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { @@ -13,7 +13,16 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() + } + + plugins.withId('kotlin-android') { + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { + kotlinOptions { + languageVersion = '1.8' + allWarningsAsErrors = false + } + } } } diff --git a/android/gradle.properties b/android/gradle.properties index 94adc3a..79b3387 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4096M android.useAndroidX=true -android.enableJetifier=true +android.enableJetifier=false +org.jetbrains.kotlin.jvm.target=1.8 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index e6b38c2..4cc8c0b 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index b4b8ea4..0000000 --- a/android/settings.gradle +++ /dev/null @@ -1,23 +0,0 @@ -pluginManagement { - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -include ':app' - -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() - -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } -} - -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory -} diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 0000000..df93bfd --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,40 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") + +val flutterRoot = rootProject.projectDir.parentFile.toPath() + +val pluginsFile = flutterRoot.resolve(".flutter-plugins").toFile() +val plugins = java.util.Properties() +if (pluginsFile.exists()) { + pluginsFile.inputStream().use { plugins.load(it) } +} + +plugins.forEach { name, path -> + val pluginDirectory = flutterRoot.resolve(path as String).resolve("android").toFile() + include(":$name") + project(":$name").projectDir = pluginDirectory +} diff --git a/lib/customStepper.dart b/lib/customStepper.dart index fc98aa1..c839e5e 100644 --- a/lib/customStepper.dart +++ b/lib/customStepper.dart @@ -237,7 +237,6 @@ class _CustomStepperState extends State { case CustomStepState.error: return const Text('!', style: _kCustomStepStyle); } - return const SizedBox.shrink(); } Color _circleColor(int index) { @@ -343,7 +342,7 @@ class _CustomStepperState extends State { child: ConstrainedBox( constraints: const BoxConstraints.tightFor(height: 48.0), child: const Row( - + ), ), ); @@ -365,7 +364,6 @@ class _CustomStepperState extends State { return (textTheme.bodyLarge ?? const TextStyle()) .copyWith(color: _isDark() ? _kErrorDark : _kErrorLight); } - return const TextStyle(); } TextStyle _subtitleStyle(int index) { @@ -384,7 +382,6 @@ class _CustomStepperState extends State { return (textTheme.bodySmall ?? const TextStyle()) .copyWith(color: _isDark() ? _kErrorDark : _kErrorLight); } - return const TextStyle(); } Widget _buildHeaderText(int index) { @@ -596,7 +593,6 @@ class _CustomStepperState extends State { case CustomStepperType.horizontal: return _buildHorizontal(); } - return const SizedBox.shrink(); } } diff --git a/lib/fireNotificationList.dart b/lib/fireNotificationList.dart index 95dadee..e2a3c0b 100644 --- a/lib/fireNotificationList.dart +++ b/lib/fireNotificationList.dart @@ -63,8 +63,12 @@ class FireNotificationList extends StatefulWidget { class _FireNotificationListState extends State { final GlobalKey _scaffoldKey = GlobalKey(); - Widget _buildRow(BuildContext context, List yourLocations, - FireNotification notif, onDeleted, onTap) { + Widget _buildRow( + BuildContext context, + List yourLocations, + FireNotification notif, + DeleteFireNotificationFunction onDeleted, + TapFireNotificationFunction onTap) { String prefix = ''; // FIXME (this can fails if you don't have a location for this notif, for instance during tests) @@ -97,8 +101,8 @@ class _FireNotificationListState extends State { BuildContext context, List yourLocations, List notifList, - onDeleted, - onTap) { + DeleteFireNotificationFunction onDeleted, + TapFireNotificationFunction onTap) { return RefreshIndicator( onRefresh: _handleRefresh, child: ListView.builder( diff --git a/lib/homePage.dart b/lib/homePage.dart index c13e45b..4a4c0ba 100644 --- a/lib/homePage.dart +++ b/lib/homePage.dart @@ -20,7 +20,6 @@ import 'objectIdUtils.dart'; import 'redux/actions.dart'; class _ViewModel { - _ViewModel({required this.isLoaded}); final bool isLoaded; @@ -36,7 +35,6 @@ class _ViewModel { } class HomePage extends StatefulWidget { - const HomePage({super.key}); static const String routeName = '/home'; @@ -72,7 +70,8 @@ class _HomePageState extends State { debugPrint( 'onMessage in fireApp (isLoaded: ${store.state.isLoaded}): $message'); if (message.data.isNotEmpty) { - final FireNotification? notif = _notifForMessage(message.data, store.state.isLoaded); + final FireNotification? notif = + _notifForMessage(message.data, store.state.isLoaded); if (notif != null) { _showItemDialog(message.data, notif); } @@ -160,8 +159,7 @@ class _HomePageState extends State { }, heroTag: 'notifyFire', backgroundColor: fires600, - label: Text(S.of(context).notifyAFire, - style: _btnFont), + label: Text(S.of(context).notifyAFire, style: _btnFont), icon: const Icon(Icons.notifications_active, size: 32.0), ), @@ -172,15 +170,14 @@ class _HomePageState extends State { : SafeArea( child: Center( child: CenteredColumn(children: [ - Row( - children: [ - IconButton( - onPressed: () { - _scaffoldKey.currentState?.openDrawer(); - }, - icon: const Icon(Icons.menu, - size: 30.0, color: Colors.black38)), - ]), + Row(children: [ + IconButton( + onPressed: () { + _scaffoldKey.currentState?.openDrawer(); + }, + icon: const Icon(Icons.menu, + size: 30.0, color: Colors.black38)), + ]), Expanded( child: FractionallySizedBox( alignment: FractionalOffset.center, @@ -238,7 +235,9 @@ class _HomePageState extends State { if (shouldNavigate ?? false) { _navigateToItemDetail(message); } - }).catchError((e) => print('$e')); + }).catchError((Object e) { + print('$e'); + }); } Widget _buildDialog(BuildContext context, FireNotification item) { diff --git a/lib/mainDrawer.dart b/lib/mainDrawer.dart index cab965f..79331a4 100644 --- a/lib/mainDrawer.dart +++ b/lib/mainDrawer.dart @@ -97,20 +97,14 @@ Widget mainDrawer(BuildContext context, String currentRoute) { leading: const Icon(Icons.notifications), selected: currentRoute == FireNotificationList.routeName, title: Text(S.of(context).fireNotificationsTitleShort), - trailing: SizedBox( - width: 100, - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - badges_pkg.Badge( - position: badges_pkg.BadgePosition.topEnd( - top: -10, end: -12), - badgeContent: Text( - view.unreadCount.toString(), - style: const TextStyle(color: Colors.white), - ), - child: const Icon(Icons.notifications)) - ])), + trailing: badges_pkg.Badge( + position: + badges_pkg.BadgePosition.topEnd(top: -10, end: -12), + badgeContent: Text( + view.unreadCount.toString(), + style: const TextStyle(color: Colors.white), + ), + child: const Icon(Icons.notifications)), // Text(S.of(context).fireNotificationsTitleShort), onTap: () { diff --git a/lib/models/fireNotification.g.dart b/lib/models/fireNotification.g.dart index 3491be7..fb4d640 100644 --- a/lib/models/fireNotification.g.dart +++ b/lib/models/fireNotification.g.dart @@ -6,7 +6,7 @@ part of 'fireNotification.dart'; // JsonSerializableGenerator // ************************************************************************** -FireNotification _$FireNotificationFromJson(Map json) => $checkedCreate( +FireNotification _$FireNotificationFromJson(Map json) => $checkedCreate( 'FireNotification', json, ($checkedConvert) { diff --git a/lib/redux/appReducer.dart b/lib/redux/appReducer.dart index fdc5932..34c3372 100644 --- a/lib/redux/appReducer.dart +++ b/lib/redux/appReducer.dart @@ -1,28 +1,28 @@ import '../models/appState.dart'; import 'actions.dart'; -AppState appReducer(AppState state, action) { +AppState appReducer(AppState state, dynamic action) { if (action is FetchYourLocationsSucceededAction) { return state.copyWith(yourLocations: action.fetchedYourLocations); } if (action is FetchFireNotificationsSucceededAction) { - return state.copyWith(fireNotifications: action.fetchedFireNotifications, - fireNotificationsUnread: action.unreadCount); + return state.copyWith( + fireNotifications: action.fetchedFireNotifications, + fireNotificationsUnread: action.unreadCount); } if (action is FetchMonitoredAreasSucceededAction) { return state.copyWith(monitoredAreas: action.monitoredAreas); } if (action is AddedFireNotificationAction) return state.copyWith( - fireNotificationsUnread: state.fireNotificationsUnread + 1); + fireNotificationsUnread: state.fireNotificationsUnread + 1); if (action is ReadedFireNotificationAction) return state.copyWith( - fireNotificationsUnread: state.fireNotificationsUnread - 1); + fireNotificationsUnread: state.fireNotificationsUnread - 1); if (action is DeleteAllFireNotificationAction) - return state.copyWith( - fireNotificationsUnread: 0); + return state.copyWith(fireNotificationsUnread: 0); return state; } diff --git a/lib/redux/fetchDataMiddleware.dart b/lib/redux/fetchDataMiddleware.dart index 08df9c9..56b1d1a 100644 --- a/lib/redux/fetchDataMiddleware.dart +++ b/lib/redux/fetchDataMiddleware.dart @@ -28,12 +28,13 @@ FiresApi api = GetIt.instance(); // Simple debounce mechanism Timer? _locationUpdateDebounceTimer; -void debounceLocationUpdate(Duration duration, Function() callback) { +void debounceLocationUpdate(Duration duration, void Function() callback) { _locationUpdateDebounceTimer?.cancel(); _locationUpdateDebounceTimer = Timer(duration, callback); } -void fetchDataMiddleware(Store store, action, NextDispatcher next) { +void fetchDataMiddleware( + Store store, dynamic action, NextDispatcher next) { // If our Middleware encounters a `FetchYourLocationAction` if (action is OnUserLangAction) { @@ -112,7 +113,8 @@ void fetchDataMiddleware(Store store, action, NextDispatcher next) { lat: action.loc.lat, lon: action.loc.lon, distance: action.loc.distance) - .then((UpdateFireMapStatsAction result) => store.dispatch(result))); + .then( + (UpdateFireMapStatsAction result) => store.dispatch(result))); store.dispatch(UpdatedYourLocationAction(action.loc)); persistYourLocations(store.state.yourLocations); } @@ -162,7 +164,8 @@ void fetchDataMiddleware(Store store, action, NextDispatcher next) { print('Local persisted: ${localLocations.length}'); for (final YourLocation subsLoc in subscribedLocations) { final YourLocation locSubs = localLocations.firstWhere( - (YourLocation localLocation) => localLocation.id == subsLoc.id, orElse: () { + (YourLocation localLocation) => localLocation.id == subsLoc.id, + orElse: () { localLocations.add(subsLoc); return subsLoc; }); @@ -188,10 +191,10 @@ void fetchDataMiddleware(Store store, action, NextDispatcher next) { final Completer? completer = action.refreshCallback; completer?.complete(null); }); - }).catchError((Exception onError) { + }).catchError((Object onError) { // If it fails, dispatch a failure action. The reducer will // update the state with the error. - store.dispatch(FetchYourLocationsFailedAction(onError)); + store.dispatch(FetchYourLocationsFailedAction(onError as Exception)); }); } @@ -257,15 +260,16 @@ void getFiresStatsInFire(Store store, FireNotification notif) { .then((UpdateFireMapStatsAction result) => store.dispatch(result)); } -void unsubsViaApi(Store store, ObjectId id, onUnsubs) { +void unsubsViaApi( + Store store, ObjectId id, void Function() onUnsubs) { api.unsubscribe(store.state, id.hexString).then((bool res) { onUnsubs(); persistYourLocations(store.state.yourLocations); }); } -void subscribeViaApi( - Store store, YourLocation loc, Function(YourLocation) onSubs) { +void subscribeViaApi(Store store, YourLocation loc, + void Function(YourLocation) onSubs) { api.subscribe(store.state, loc).then((String subsId) { final YourLocation sub = loc; // if (loc.id != subsId) { diff --git a/lib/redux/reducers.dart b/lib/redux/reducers.dart index 1ef096b..9795820 100644 --- a/lib/redux/reducers.dart +++ b/lib/redux/reducers.dart @@ -9,7 +9,7 @@ import 'userReducer.dart'; import 'yourLocationsReducer.dart'; // We create the State reducer by combining many smaller reducers into one! -AppState appStateReducer(AppState prevState, action) { +AppState appStateReducer(AppState prevState, dynamic action) { final AppState state = appReducer(prevState, action); return AppState( yourLocations: yourLocationsReducer(state.yourLocations, action), diff --git a/lib/redux/userReducer.dart b/lib/redux/userReducer.dart index f9dc707..2dfbb0a 100644 --- a/lib/redux/userReducer.dart +++ b/lib/redux/userReducer.dart @@ -1,8 +1,9 @@ import '../models/user.dart'; import 'actions.dart'; -User userReducer(User user, action) { - if (action is OnUserCreatedAction) return user.copyWith(userId: action.userId); +User userReducer(User user, dynamic action) { + if (action is OnUserCreatedAction) + return user.copyWith(userId: action.userId); if (action is OnUserTokenAction) return user.copyWith(token: action.token); if (action is OnUserLangAction) return user.copyWith(lang: action.lang); return user; diff --git a/lib/sandbox.dart b/lib/sandbox.dart index 66dae68..036ad01 100644 --- a/lib/sandbox.dart +++ b/lib/sandbox.dart @@ -24,7 +24,7 @@ class Sandbox extends StatelessWidget { body: ElevatedButton( child: const Text('Press'), onPressed: () { - showDialog( + /*showDialog( context: context, builder: (BuildContext context) { return const SimpleDialog( @@ -35,7 +35,7 @@ class Sandbox extends StatelessWidget { child: Text('hhh'), ), ]); - }); + });*/ })); } }