Athena — roomy-mobile/archive/changes/2025-12-28-fix-runtime-locale-switching/tasks/002-migrate-enums.md


status: done

Task: Migrate enum label methods to use S parameter

End Goal

All enums that provide localized labels accept an S strings parameter instead of using gStrings, enabling reactive locale switching.

Currently

Enums use the static gStrings accessor:

String get label => switch (this) {
  CleaningTaskSize.xs => gStrings.cleaningTaskSizeXs,
};

Should

Enums accept an S strings parameter:

String label(S strings) => switch (this) {
  CleaningTaskSize.xs => strings.cleaningTaskSizeXs,
};

Call sites provide context.strings:

size.label(context.strings)

Constraints

  • [ ] Use S strings parameter, not BuildContext context
  • [ ] Update all call sites to pass context.strings
  • [ ] Maintain exhaustive switch expressions

Acceptance Criteria

  • [ ] No gStrings usages remain in any enum file
  • [ ] All enum label methods accept S strings parameter
  • [ ] All call sites compile without errors
  • [ ] flutter analyze passes

Implementation Checklist

  • [x] 2.1 Migrate lib/cleaning/enums/cleaning_task_size.dart (5 usages)
  • [x] 2.2 Migrate lib/cleaning/enums/cleaning_time_span.dart (4 usages)
  • [x] 2.3 Migrate lib/data/enums/month.dart (12 usages)
  • [x] 2.4 Migrate lib/feedback/enums/feedback_type.dart (4 usages)
  • [x] 2.5 Migrate lib/l10n/enums/t_supported_language.dart (4 usages)
  • [x] 2.6 Migrate lib/routing/enums/navigation_tab.dart (4 usages)
  • [x] 2.7 Update all call sites for each migrated enum
  • [x] 2.8 Run flutter analyze

Notes

The month.dart enum already has a fullName(BuildContext context) method that uses gStrings internally. This should be changed to use context.strings directly since it already has context access.

Reacties

Nog geen reacties