Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

refactor: reduce duplication and improve readability of settings page

Aperta
#641 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
dart, flutter
Ambito
mobile

Direzione di ricerca

Inizia in lib/app/modules/settings/views/ e leggi la pagina delle impostazioni insieme ai quattro file trailing dei toggle elencati. Traccia SupportedLanguage e la conferma inline per l'eliminazione delle attività prima di pianificare la SettingsGroup condivisa, il getter dei nomi delle lingue e il tile delete-tasks estratto. Il lavoro è completato quando la logica ripetuta di sezioni e toggle è consolidata, i nomi delle lingue hanno un'unica fonte, il dialog è estratto e i cinque file assorbiti sono rimossi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

The settings page (lib/app/modules/settings/views/) has significant code duplication and readability
issues:

  • Repeated section boilerplate - _buildSectionHeader() and _buildSettingsCard() are called manually for
    every settings group with the same styling logic.
  • Near-identical toggle widgets - 4 separate files (settings_page_on_task_start_list_tile_trailing.dart,
    settings_page_on_task_create_list_tile_trailing.dart, settings_page_highlist_task_list_tile_trailing.dart,
    settings_page_enable_24hr_format_list_tile_trailing.dart) each containing ~30 lines that all do the same
    thing: Obx(() => Switch(...)).
  • Hardcoded language names - _getLanguageName() duplicates what should be part of the SupportedLanguage enum, requiring updates in multiple places when a language is added.
  • Large inline widgets - The delete-tasks confirmation dialog (~80 lines) is inlined directly in the body,
    hurting readability.

Proposed Changes

  1. Introduce SettingsGroup widget + SettingsItemConfig sealed class
    A single reusable widget that accepts title, icon, and a List and handles section
    header, card styling, and dividers internally. Three item types:
  • SettingsToggleItem - title, subtitle, RxBool value, optional prefsKey (auto-saves to SharedPreferences),
    optional onChanged for extra side effects
  • SettingsDropdownItem - title, subtitle, Rx value, options list, labelBuilder, onChanged
  • SettingsCustomItem wraps any custom widget
  1. Add nativeName getter to SupportedLanguage
    Centralizes display names so Dart's exhaustive switch enforces updates when new languages are added.

  2. Extract delete-tasks tile into SettingsPageDeleteTasksTile
    Moves the FutureBuilder + confirmation dialog into its own widget file.

  3. Delete absorbed files
    Remove the 5 single-purpose trailing widget files whose logic is now handled by SettingsGroup.

Lingua principale
Dart
Stelle
244
Fork
179
Merge medio
12h 42m
PR unite (30g)
2

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CCExtractor/taskwarrior-flutter

Tutte le issue di CCExtractor/taskwarrior-flutter

Issue simili

Altre issue su Dart

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.