From a5e0335f721f239b5597067c80d95534da68030c Mon Sep 17 00:00:00 2001 From: vjrj Date: Fri, 6 Mar 2026 11:28:04 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20resolve=20all=20warnings=20(59=20warning?= =?UTF-8?q?s=20=E2=86=92=200)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix bloc_lint include_file_not_found by removing unneeded include - Add explicit type annotations to callback parameters in activeFires.dart - Add explicit type parameters to MaterialPageRoute constructors - Add explicit type parameters to Future.delayed() calls - Fix error handler signatures: (Object err, StackTrace stack) - Remove 'const' from genericMap() widget construction (StatefulWidget) All strict analysis errors and warnings now resolved (0 errors, 0 warnings). Remaining 339 issues are info-level linting suggestions. --- .flutter-plugins-dependencies | 2 +- analysis_options.yaml | 4 ---- android/app/build.gradle | 13 +++++++++++-- android/settings.gradle | 8 ++++++++ lib/activeFires.dart | 26 ++++++++++++++++---------- lib/fileUtils.dart | 5 ++++- lib/fireNotificationList.dart | 29 ++++++++++++++++------------- lib/genericMapBottom.dart | 26 +++++++++++++++----------- 8 files changed, 71 insertions(+), 42 deletions(-) diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index 522227f..adb2b8d 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-05 03:01:39.298652","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 11:25:54.095254","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 c6ba7d9..2ae1b05 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -174,8 +174,4 @@ linter: - use_test_throws_matchers - valid_regexps - void_checks - -include: package:bloc_lint/recommended.yaml -bloc: - rules: - avoid_flutter_imports diff --git a/android/app/build.gradle b/android/app/build.gradle index 7ba2bd3..2267698 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -11,13 +11,20 @@ if (flutterRoot == null) { throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } -apply plugin: 'com.android.application' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +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 namespace "org.comunes.fires" @@ -85,3 +92,5 @@ dependencies { } apply plugin: 'com.google.gms.google-services' + +apply plugin: 'com.google.gms.google-services' diff --git a/android/settings.gradle b/android/settings.gradle index 5a2f14f..b4b8ea4 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,3 +1,11 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + include ':app' def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() diff --git a/lib/activeFires.dart b/lib/activeFires.dart index 85fbb61..e6a7300 100644 --- a/lib/activeFires.dart +++ b/lib/activeFires.dart @@ -20,7 +20,6 @@ import 'redux/actions.dart'; @immutable class _ViewModel { - const _ViewModel( {required this.onAdd, required this.onDelete, @@ -93,7 +92,8 @@ class _ActiveFiresPageState extends State { ]; } - Widget _buildRow(BuildContext context, YourLocation loc, onToggle, onTap) { + Widget _buildRow(BuildContext context, YourLocation loc, + ToggleSubscriptionFunction onToggle, OnLocationTapFunction onTap) { const TextStyle fireStatsStyle = TextStyle(color: fires600); return ListTile( dense: true, @@ -144,7 +144,11 @@ class _ActiveFiresPageState extends State { } Widget _buildSavedLocations( - BuildContext context, List yl, onDeleted, onToggle, onTap) { + BuildContext context, + List yl, + DeleteYourLocationFunction onDeleted, + ToggleSubscriptionFunction onToggle, + OnLocationTapFunction onTap) { return ListView.builder( padding: const EdgeInsets.all(16.0), itemCount: yl.length, @@ -158,13 +162,13 @@ class _ActiveFiresPageState extends State { background: Container( color: theme.primaryColor, child: const ListTile( - leading: Icon(Icons.delete, - color: Colors.white, size: 36.0))), + leading: + Icon(Icons.delete, color: Colors.white, size: 36.0))), secondaryBackground: Container( color: theme.primaryColor, child: const ListTile( - trailing: Icon(Icons.delete, - color: Colors.white, size: 36.0))), + trailing: + Icon(Icons.delete, color: Colors.white, size: 36.0))), child: Container( decoration: BoxDecoration( color: theme.canvasColor, @@ -182,8 +186,8 @@ class _ActiveFiresPageState extends State { print('New ViewModel of Active Fires'); return _ViewModel( onAdd: (YourLocation loc) { - if (store.state.yourLocations - .any((YourLocation l) => loc.lat == l.lat && loc.lon == l.lon)) { + if (store.state.yourLocations.any( + (YourLocation l) => loc.lat == l.lat && loc.lon == l.lon)) { // Already added showSnackMsg(S.of(context).addedThisLocation); } else { @@ -283,7 +287,9 @@ class _ActiveFiresPageState extends State { Store store, YourLocation loc, BuildContext context) { store.dispatch(ShowYourLocationMapAction(loc)); Navigator.push( - context, MaterialPageRoute(builder: (BuildContext context) => const genericMap())); + context, + MaterialPageRoute( + builder: (BuildContext context) => genericMap())); } void onAddYourLocation(AddYourLocationFunction onAdd) { diff --git a/lib/fileUtils.dart b/lib/fileUtils.dart index eb18e70..630e9f4 100644 --- a/lib/fileUtils.dart +++ b/lib/fileUtils.dart @@ -36,7 +36,10 @@ Future getFileNameOfLang( // https://github.com/flutter/flutter/issues/15325 Future assetNotExists(String asset) { print('Does not exists $asset ?'); - return rootBundle.load(asset).then((_) => false).catchError((err, stack) { + return rootBundle + .load(asset) + .then((_) => false) + .catchError((Object err, StackTrace stack) { print(err); print(stack); return true; diff --git a/lib/fireNotificationList.dart b/lib/fireNotificationList.dart index 08d9b3f..95dadee 100644 --- a/lib/fireNotificationList.dart +++ b/lib/fireNotificationList.dart @@ -17,7 +17,6 @@ import 'redux/actions.dart'; @immutable class _ViewModel { - const _ViewModel( {required this.isLoaded, required this.onTap, @@ -69,7 +68,8 @@ class _FireNotificationListState extends State { String prefix = ''; // FIXME (this can fails if you don't have a location for this notif, for instance during tests) - final YourLocation yl = yourLocations.singleWhere((YourLocation yl) => yl.id == notif.subsId); + final YourLocation yl = + yourLocations.singleWhere((YourLocation yl) => yl.id == notif.subsId); prefix = '${yl.description}. '; return ListTile( @@ -127,15 +127,14 @@ class _FireNotificationListState extends State { decoration: BoxDecoration( color: theme.canvasColor, border: Border( - bottom: - BorderSide(color: theme.dividerColor))), + bottom: BorderSide(color: theme.dividerColor))), child: _buildRow(context, yourLocations, notifList.elementAt(i), onDeleted, onTap))); })); } Future _handleRefresh() async { - await Future.delayed(const Duration(seconds: 1)); + await Future.delayed(const Duration(seconds: 1)); setState(() {}); @@ -166,8 +165,8 @@ class _FireNotificationListState extends State { }, onTap: (FireNotification notif) { if (!notif.read) { - store.dispatch(ReadFireNotificationAction( - notif.copyWith(read: true))); + store.dispatch( + ReadFireNotificationAction(notif.copyWith(read: true))); } Timer(const Duration(milliseconds: 500), () { gotoMap(store, notif, context); @@ -194,9 +193,12 @@ class _FireNotificationListState extends State { }, ), actions: [ - if (hasFireNotifications) IconButton( - icon: const Icon(Icons.delete), - onPressed: () => _showConfirmDialog(view)) else null + if (hasFireNotifications) + IconButton( + icon: const Icon(Icons.delete), + onPressed: () => _showConfirmDialog(view)) + else + null ].where((Widget? w) => w != null).cast().toList()), body: !view.isLoaded ? const FiresSpinner() @@ -232,7 +234,9 @@ class _FireNotificationListState extends State { Store store, FireNotification notif, BuildContext context) { store.dispatch(ShowFireNotificationMapAction(notif)); Navigator.push( - context, MaterialPageRoute(builder: (BuildContext context) => const genericMap())); + context, + MaterialPageRoute( + builder: (BuildContext context) => genericMap())); } Future _showConfirmDialog(_ViewModel view) { @@ -245,8 +249,7 @@ class _FireNotificationListState extends State { content: SingleChildScrollView( child: ListBody( children: [ - Text( - S.of(context).deleteAllFireNotificationsAlertDescription) + Text(S.of(context).deleteAllFireNotificationsAlertDescription) ], ), ), diff --git a/lib/genericMapBottom.dart b/lib/genericMapBottom.dart index ca5f6c1..4e42ffb 100644 --- a/lib/genericMapBottom.dart +++ b/lib/genericMapBottom.dart @@ -15,12 +15,13 @@ import 'models/yourLocation.dart'; typedef OnSave = void Function(); typedef OnCancel = void Function(); -typedef OnFalsePositive = void Function(FireNotification notif, FalsePositiveType type); +typedef OnFalsePositive = void Function( + FireNotification notif, FalsePositiveType type); class GenericMapBottom extends StatelessWidget { - const GenericMapBottom( - {super.key, required this.onSave, + {super.key, + required this.onSave, required this.onCancel, required this.onFalsePositive, required this.state, @@ -80,11 +81,14 @@ class GenericMapBottom extends StatelessWidget { Text(Moment.now().from(context, notif.when)), ], ), - if (state.industries.isNotEmpty || state.falsePos.isNotEmpty) Padding( - padding: const EdgeInsets.only(top: 10.0), - child: Text( - S.of(context).itSeemsNotAtForesFire, - style: const TextStyle(color: fires600))) else null, + if (state.industries.isNotEmpty || + state.falsePos.isNotEmpty) + Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Text(S.of(context).itSeemsNotAtForesFire, + style: const TextStyle(color: fires600))) + else + null, DropdownButton( style: const TextStyle( color: Colors.black, @@ -112,12 +116,12 @@ class GenericMapBottom extends StatelessWidget { if (value != null) { onFalsePositive(notif, value); } - await Future.delayed( + await Future.delayed( const Duration(milliseconds: 500)); ScaffoldMessenger.of(context) .showSnackBar(SnackBar( - content: Text( - S.of(context).thanksForParticipating), + content: + Text(S.of(context).thanksForParticipating), )); }), ] as List)))));