refactor: reduce duplication and improve readability of settings page
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
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
- 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
-
Add nativeName getter to SupportedLanguage
Centralizes display names so Dart's exhaustive switch enforces updates when new languages are added. -
Extract delete-tasks tile into SettingsPageDeleteTasksTile
Moves the FutureBuilder + confirmation dialog into its own widget file. -
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CCExtractor/taskwarrior-flutter
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CCExtractor/taskwarrior-flutter#639 · 2 commenti ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
CCExtractor/taskwarrior-flutter#647 · 1 reazione ·
-
bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
CCExtractor/taskwarrior-flutter#645 · 1 commento ·
Tutte le issue di CCExtractor/taskwarrior-flutter
Issue simili
-
status: needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
a2ui-project/a2ui#2782 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
MaikuB/flutter_local_notifications#2832 · 1 commento ·
-
bug triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
fluttercommunity/plus_plugins#3979 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
from.page-issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100