Los dos jobs de ci.yml fallaban desde julio, y no era por los secretos:
- `flutter analyze` exige que existan los assets declarados en pubspec, y
private-settings*.json están en .gitignore. El workflow los crea vacíos: para
analizar basta con que existan.
- test/file_test.dart usaba package:test y llamaba a getFileNameOfLang, que lee
del rootBundle; sin binding moría, y con binding se quedaba colgado esperando
al canal de assets. getFileNameOfLang acepta ahora un AssetBundle inyectable y
el test usa uno de mentira, lo que además permite cubrir el idioma de respaldo
y el fichero base.
- SDK de Dart a >=3.8.0, que es lo que piden los generadores actuales.
Reproducido antes y después en la misma imagen del runner
(ghcr.io/cirruslabs/flutter:3.41.9): ANALYZE_EXIT=1/TEST_EXIT=1 -> ambos en verde.
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.