Migrate fires_flutter to flutter_map v6.1.0 and complete major null-safety fixes

- Updated Android build files: gradle plugin 8.2.2, gradle 8.3, SDK 34, minSdk 21
- Ran dart fix --apply for 87 automatic null-safety fixes
- Migrated flutter_map v6 API breaking changes:
  - MapOptions: center → initialCenter, zoom → initialZoom
  - layers → children structure
  - TileLayerOptions/MarkerLayerOptions/PolylineLayerOptions → TileLayer/MarkerLayer/PolylineLayer
  - Removed plugin_api.dart imports
  - Converted old plugin system (ZoomMapPlugin, AttributionPlugin, etc.) to direct widgets
  - Updated onTap callback signature: (TapPosition) → (TapPosition, LatLng)
- Migrated all marker/polyline creation to v6 API
- Fixed FlatButton → TextButton deprecation
- Fixed stackTrace access with catch(e, stackTrace) pattern
- Removed deprecated flutter_google_places_autocomplete dependency
- Removed deprecated dependencies: latlong, connectivity, launch_review
- Updated all imports from latlong → latlong2
- Placeholder implementation for places autocomplete (feature temporarily disabled)

Remaining tasks (non-blocking for build):
- Complete null-safety fixes for _location variables in genericMap.dart
- Fix theme.dart MaterialTheme parameter issues
- Fix customStepper.dart null-safety issues
- Final build and testing
This commit is contained in:
vjrj 2026-03-05 02:10:14 +01:00
parent 292cf65bbc
commit eb0d19621c
46 changed files with 586 additions and 697 deletions

View file

@ -1,14 +1,14 @@
import 'dart:async';
import 'package:comunes_flutter/comunes_flutter.dart';
import 'package:connectivity/connectivity.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:fires_flutter/models/fireNotification.dart';
import 'package:fires_flutter/objectIdUtils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:flutter_simple_dependency_injection/injector.dart';
import 'package:get_it/get_it.dart';
import 'package:redux/redux.dart';
import 'activeFires.dart';
@ -24,7 +24,7 @@ import 'redux/actions.dart';
class _ViewModel {
final bool isLoaded;
_ViewModel({@required this.isLoaded});
_ViewModel({required this.isLoaded});
@override
bool operator ==(Object other) =>
@ -48,7 +48,7 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State<HomePage> {
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
final Store<AppState> store = Injector.getInjector().get<Store<AppState>>();
final Store<AppState> store = GetIt.instance<Store<AppState>>();
final Connectivity _connectivity = new Connectivity();
final List<FireNotification> newNotifications = [];
@ -104,7 +104,6 @@ class _HomePageState extends State<HomePage> {
print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) {
assert(token != null);
// print(token);
store.dispatch(new OnUserTokenAction(token));
setState(() {});
@ -302,13 +301,12 @@ class _HomePageState extends State<HomePage> {
} catch (e) {
debugPrint(e.toString());
}
if (notif != null)
// if our store is loaded, we just dispatch the notification, if not, we wait til is loaded
if (isLoaded) {
store.dispatch(new AddFireNotificationAction(notif));
} else {
newNotifications.add(notif);
}
if (isLoaded) {
store.dispatch(new AddFireNotificationAction(notif));
} else {
newNotifications.add(notif);
}
return notif;
}
}