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

@ -0,0 +1,41 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'app_state.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
AppState _$AppStateFromJson(Map json) => $checkedCreate(
'AppState',
json,
($checkedConvert) {
final val = AppState(
yourLocations: $checkedConvert(
'yourLocations',
(v) =>
(v as List<dynamic>?)
?.map((e) => YourLocation.fromJson(
Map<String, dynamic>.from(e as Map)))
.toList() ??
const <YourLocation>[]),
fireNotifications: $checkedConvert(
'fireNotifications',
(v) =>
(v as List<dynamic>?)
?.map((e) => FireNotification.fromJson(
Map<String, dynamic>.from(e as Map)))
.toList() ??
const <FireNotification>[]),
isLoading: $checkedConvert('isLoading', (v) => v as bool? ?? false),
);
return val;
},
);
Map<String, dynamic> _$AppStateToJson(AppState instance) => <String, dynamic>{
'isLoading': instance.isLoading,
'yourLocations': instance.yourLocations.map((e) => e.toJson()).toList(),
'fireNotifications':
instance.fireNotifications.map((e) => e.toJson()).toList(),
};

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:objectid/objectid.dart';
import '../objectIdUtils.dart';
import '../object_id_utils.dart';
import '../utils/widget_utils.dart';
part 'fire_notification.g.dart';

View file

@ -0,0 +1,38 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'fire_notification.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
FireNotification _$FireNotificationFromJson(Map json) => $checkedCreate(
'FireNotification',
json,
($checkedConvert) {
final val = FireNotification(
id: $checkedConvert('id', (v) => objectIdFromJson(v as String)),
lat: $checkedConvert('lat', (v) => (v as num).toDouble()),
lon: $checkedConvert('lon', (v) => (v as num).toDouble()),
description: $checkedConvert('description', (v) => v as String),
when: $checkedConvert('when', (v) => DateTime.parse(v as String)),
read: $checkedConvert('read', (v) => v as bool),
sealed: $checkedConvert('sealed', (v) => v as String),
subsId:
$checkedConvert('subsId', (v) => objectIdFromJson(v as String)),
);
return val;
},
);
Map<String, dynamic> _$FireNotificationToJson(FireNotification instance) =>
<String, dynamic>{
'id': objectIdToJson(instance.id),
'lat': instance.lat,
'lon': instance.lon,
'description': instance.description,
'when': instance.when.toIso8601String(),
'sealed': instance.sealed,
'subsId': objectIdToJson(instance.subsId),
'read': instance.read,
};

View file

@ -7,10 +7,10 @@ import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart';
import '../globals.dart' as globals;
import '../objectIdUtils.dart';
import '../object_id_utils.dart';
import '../redux/actions.dart';
import 'app_state.dart';
import 'falsePositiveTypes.dart';
import 'false_positive_types.dart';
import 'your_location.dart';
class FiresApi {
@ -189,9 +189,12 @@ class FiresApi {
final Map<String, dynamic> unionData =
dataData['union'] as Map<String, dynamic>;
final String unionValue = unionData['value'] as String;
final Map<String, dynamic> decodedJson =
json.decode(unionValue) as Map<String, dynamic>;
final Map<String, dynamic> geometry =
decodedJson['geometry'] as Map<String, dynamic>;
final List<dynamic> multipolygon =
(json.decode(unionValue) as Map<String, dynamic>)['geometry']
['coordinates'] as List<dynamic>;
geometry['coordinates'] as List<dynamic>;
for (final dynamic polygonDynamic in multipolygon) {
final List<dynamic> polygon = polygonDynamic as List<dynamic>;
for (final dynamic holeDynamic in polygon) {

View file

@ -2,7 +2,7 @@ import 'package:json_annotation/json_annotation.dart';
import 'package:meta/meta.dart';
import 'package:objectid/objectid.dart';
import '../objectIdUtils.dart';
import '../object_id_utils.dart';
part 'your_location.g.dart';

View file

@ -0,0 +1,38 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'your_location.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
YourLocation _$YourLocationFromJson(Map json) => $checkedCreate(
'YourLocation',
json,
($checkedConvert) {
final val = YourLocation(
id: $checkedConvert('id', (v) => objectIdFromJson(v as String)),
lat: $checkedConvert('lat', (v) => (v as num).toDouble()),
lon: $checkedConvert('lon', (v) => (v as num).toDouble()),
description:
$checkedConvert('description', (v) => v as String? ?? ''),
distance:
$checkedConvert('distance', (v) => (v as num?)?.toInt() ?? 10),
currentNumFires:
$checkedConvert('currentNumFires', (v) => (v as num?)?.toInt()),
subscribed: $checkedConvert('subscribed', (v) => v as bool? ?? false),
);
return val;
},
);
Map<String, dynamic> _$YourLocationToJson(YourLocation instance) =>
<String, dynamic>{
'id': objectIdToJson(instance.id),
'lat': instance.lat,
'lon': instance.lon,
'description': instance.description,
'subscribed': instance.subscribed,
'distance': instance.distance,
'currentNumFires': instance.currentNumFires,
};