fix: resolve 78 strict analysis errors with explicit type annotations

Implemented systematic type safety improvements across the codebase to eliminate all 78 strict analysis errors:

## Phase 1: Quick Wins (Redux & Model Fixes)
- Added explicit type annotations to Redux reducer parameters
- Fixed copyWith() methods in FireNotification and YourLocation models with proper nullable types
- Fixed BasicLocation field initializers with type casts (num to double)
- Fixed context parameter inference in IntroPage and PrivacyPage
- Regenerated .g.dart files with build_runner

## Phase 2: JSON Deserialization
- Fixed homePage.dart Firebase message parameter casting (9 errors)
- Fixed firesApi.dart JSON parsing:
  - Added explicit casts for num to double/int conversions
  - Fixed array iteration with proper List<dynamic> casting
  - Added return type annotation to objectIdFromJson()
  - Fixed nested JSON access in getMonitoredAreas()
- Fixed globalFiresBottomStats.dart dynamic to int/String casting
- Fixed locationUtils.dart string assignments

## Phase 3: Config & Redux Middleware
- Fixed mainCommon.dart config map access with explicit String casts
- Fixed mainProd.dart Sentry DSN casting
- Fixed fetchDataMiddleware.dart:
  - Added Store<AppState>, String type annotations to createUser()
  - Added Function(YourLocation) type to subscribeViaApi callback
  - Added Exception type to catchError handler
- Fixed fireMapReducer.dart restoreStatusAfterSave parameter type
- Fixed persist files with Map<String, dynamic> type annotations

## Phase 4: Edge Cases
- Fixed slider.dart method return types (Widget sizeText, Widget warningText)
- Fixed mainDrawer.dart Key? parameter type annotation

Result: 78 errors → 0 errors
This commit is contained in:
vjrj 2026-03-06 10:47:12 +01:00
parent 989238bf76
commit 1864e5b105
24 changed files with 153 additions and 114 deletions

View file

@ -6,22 +6,24 @@ part of 'fireNotification.dart';
// JsonSerializableGenerator
// **************************************************************************
FireNotification _$FireNotificationFromJson(Map json) {
return $checkedNew('FireNotification', json, () {
final val = FireNotification(
id: $checkedConvert(json, 'id', (v) => objectIdFromJson(v as String)),
lat: $checkedConvert(json, 'lat', (v) => (v as num).toDouble()),
lon: $checkedConvert(json, 'lon', (v) => (v as num).toDouble()),
description: $checkedConvert(json, 'description', (v) => v as String),
when: $checkedConvert(json, 'when', (v) => DateTime.parse(v as String)),
read: $checkedConvert(json, 'read', (v) => v as bool),
sealed: $checkedConvert(json, 'sealed', (v) => v as String),
subsId:
$checkedConvert(json, 'subsId', (v) => objectIdFromJson(v as String)),
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;
},
);
return val;
});
}
Map<String, dynamic> _$FireNotificationToJson(FireNotification instance) =>
<String, dynamic>{