Fix 13 lint issues: immutability, imports, async/await, and code style

High-priority fixes (10 issues):
- assignment_to_final errors (7): Use copyWith() to respect immutability in YourLocation, active_fires.dart, generic_map.dart, location_utils.dart, and fetch_data_middleware.dart instead of direct assignment
- Fixed import paths (3): Updated falsePositiveTypes.dart → false_positive_types.dart and firesApi.dart → fires_api.dart in reducers.dart, fire_notification_actions.dart, fires_api.dart

Medium/Low priority fixes (3 issues):
- unnecessary_non_null_assertion: Removed redundant '!' in app_intro_page.dart line 54
- use_super_parameters: Updated app_intro_page.dart to use modern super(key: key) syntax
- no_logic_in_create_state: Fixed material_app_with_intro.dart by moving parameters to State instead of createState
- noop_primitive_operations: Removed redundant .toString() in string interpolation
- avoid_void_async: Changed void _selectLocation to Future<void> in places_autocomplete_utils.dart
- avoid_dynamic_calls: Fixed dynamic map access in fires_api.dart by properly casting intermediate values

Result: Reduced lint issues from 56 to 20 (all remaining are by-design: library_private_types_in_public_api and implementation_imports from external packages)
APK builds successfully with no errors.
This commit is contained in:
vjrj 2026-03-12 09:16:20 +01:00
parent 12653b80a4
commit 30a89fc5c0
23 changed files with 205 additions and 80 deletions

View file

@ -5,13 +5,13 @@ import 'package:get_it/get_it.dart';
import 'package:objectid/objectid.dart';
import 'package:redux/redux.dart';
import '../models/appState.dart';
import '../models/fireNotification.dart';
import '../models/fireNotificationsPersist.dart';
import '../models/firesApi.dart';
import '../models/yourLocation.dart';
import '../models/yourLocationPersist.dart';
import '../objectIdUtils.dart';
import '../models/app_state.dart';
import '../models/fire_notification.dart';
import '../models/fire_notifications_persist.dart';
import '../models/fires_api.dart';
import '../models/your_location.dart';
import '../models/your_location_persist.dart';
import '../object_id_utils.dart';
import 'actions.dart';
// A middleware takes in 3 parameters: your Store, which you can use to
@ -157,23 +157,26 @@ void fetchDataMiddleware(
// If it succeeds, dispatch a success action with the YourLocations.
// Our reducer will then update the State using these YourLocations.
// unsubscribe all locally to sync the subs state
for (final YourLocation location in localLocations) {
location.subscribed = false;
}
final List<YourLocation> unsubscribedLocations = localLocations
.map(
(YourLocation location) => location.copyWith(subscribed: false))
.toList();
for (final YourLocation subsLoc in subscribedLocations) {
final YourLocation locSubs = localLocations.firstWhere(
(YourLocation localLocation) => localLocation.id == subsLoc.id,
orElse: () {
localLocations.add(subsLoc);
return subsLoc;
});
locSubs.subscribed = true;
final int index = unsubscribedLocations.indexWhere(
(YourLocation localLocation) => localLocation.id == subsLoc.id);
if (index >= 0) {
unsubscribedLocations[index] =
unsubscribedLocations[index].copyWith(subscribed: true);
} else {
unsubscribedLocations.add(subsLoc);
}
}
store.dispatch(FetchYourLocationsSucceededAction(localLocations));
persistYourLocations(localLocations);
store
.dispatch(FetchYourLocationsSucceededAction(unsubscribedLocations));
persistYourLocations(unsubscribedLocations);
for (final YourLocation yl in localLocations) {
for (final YourLocation yl in unsubscribedLocations) {
api
.getFiresInLocation(
state: store.state,
@ -181,8 +184,8 @@ void fetchDataMiddleware(
lon: yl.lon,
distance: yl.distance)
.then((UpdateFireMapStatsAction value) {
yl.currentNumFires = value.numFires;
store.dispatch(UpdateYourLocationAction(yl));
store.dispatch(UpdateYourLocationAction(
yl.copyWith(currentNumFires: value.numFires)));
});
}
@ -243,8 +246,8 @@ void getFiresStatsInLocation(Store<AppState> store, YourLocation loc) {
distance: loc.distance)
.then((UpdateFireMapStatsAction result) {
store.dispatch(result);
loc.currentNumFires = result.numFires;
store.dispatch(UpdateYourLocationAction(loc));
store.dispatch(UpdateYourLocationAction(
loc.copyWith(currentNumFires: result.numFires)));
});
}