feat(02-03): create task providers, form screen with frequency and effort selectors
- TaskActions AsyncNotifier for create, update, delete, complete task mutations - tasksInRoomProvider manual StreamProvider.family wrapping TasksDao.watchTasksInRoom - TaskFormScreen with name, frequency (10 presets + custom), effort (3-way segmented), description, and initial due date picker (German DD.MM.YYYY format) - Custom frequency: number + unit picker (Tage/Wochen/Monate) - Calendar-anchored intervals auto-set anchorDay from due date - Edit mode loads existing task and pre-fills all fields - 19 new German localization keys for task form, delete, and empty state Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -39,5 +39,25 @@
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"cancel": "Abbrechen"
|
||||
"cancel": "Abbrechen",
|
||||
"taskFormCreateTitle": "Aufgabe erstellen",
|
||||
"taskFormEditTitle": "Aufgabe bearbeiten",
|
||||
"taskFormNameLabel": "Aufgabenname",
|
||||
"taskFormNameHint": "z.B. Staubsaugen, Fenster putzen...",
|
||||
"taskFormNameRequired": "Bitte einen Namen eingeben",
|
||||
"taskFormFrequencyLabel": "Wiederholung",
|
||||
"taskFormFrequencyCustom": "Benutzerdefiniert",
|
||||
"taskFormFrequencyEvery": "Alle",
|
||||
"taskFormFrequencyUnitDays": "Tage",
|
||||
"taskFormFrequencyUnitWeeks": "Wochen",
|
||||
"taskFormFrequencyUnitMonths": "Monate",
|
||||
"taskFormEffortLabel": "Aufwand",
|
||||
"taskFormDescriptionLabel": "Beschreibung (optional)",
|
||||
"taskFormDueDateLabel": "Erstes F\u00e4lligkeitsdatum",
|
||||
"taskDeleteConfirmTitle": "Aufgabe l\u00f6schen?",
|
||||
"taskDeleteConfirmMessage": "Die Aufgabe wird unwiderruflich gel\u00f6scht.",
|
||||
"taskDeleteConfirmAction": "L\u00f6schen",
|
||||
"taskEmptyTitle": "Noch keine Aufgaben",
|
||||
"taskEmptyMessage": "Erstelle die erste Aufgabe f\u00fcr diesen Raum.",
|
||||
"taskEmptyAction": "Aufgabe erstellen"
|
||||
}
|
||||
|
||||
@@ -273,6 +273,126 @@ abstract class AppLocalizations {
|
||||
/// In de, this message translates to:
|
||||
/// **'Abbrechen'**
|
||||
String get cancel;
|
||||
|
||||
/// No description provided for @taskFormCreateTitle.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufgabe erstellen'**
|
||||
String get taskFormCreateTitle;
|
||||
|
||||
/// No description provided for @taskFormEditTitle.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufgabe bearbeiten'**
|
||||
String get taskFormEditTitle;
|
||||
|
||||
/// No description provided for @taskFormNameLabel.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufgabenname'**
|
||||
String get taskFormNameLabel;
|
||||
|
||||
/// No description provided for @taskFormNameHint.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'z.B. Staubsaugen, Fenster putzen...'**
|
||||
String get taskFormNameHint;
|
||||
|
||||
/// No description provided for @taskFormNameRequired.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Bitte einen Namen eingeben'**
|
||||
String get taskFormNameRequired;
|
||||
|
||||
/// No description provided for @taskFormFrequencyLabel.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Wiederholung'**
|
||||
String get taskFormFrequencyLabel;
|
||||
|
||||
/// No description provided for @taskFormFrequencyCustom.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Benutzerdefiniert'**
|
||||
String get taskFormFrequencyCustom;
|
||||
|
||||
/// No description provided for @taskFormFrequencyEvery.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Alle'**
|
||||
String get taskFormFrequencyEvery;
|
||||
|
||||
/// No description provided for @taskFormFrequencyUnitDays.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Tage'**
|
||||
String get taskFormFrequencyUnitDays;
|
||||
|
||||
/// No description provided for @taskFormFrequencyUnitWeeks.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Wochen'**
|
||||
String get taskFormFrequencyUnitWeeks;
|
||||
|
||||
/// No description provided for @taskFormFrequencyUnitMonths.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Monate'**
|
||||
String get taskFormFrequencyUnitMonths;
|
||||
|
||||
/// No description provided for @taskFormEffortLabel.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufwand'**
|
||||
String get taskFormEffortLabel;
|
||||
|
||||
/// No description provided for @taskFormDescriptionLabel.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Beschreibung (optional)'**
|
||||
String get taskFormDescriptionLabel;
|
||||
|
||||
/// No description provided for @taskFormDueDateLabel.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Erstes Fälligkeitsdatum'**
|
||||
String get taskFormDueDateLabel;
|
||||
|
||||
/// No description provided for @taskDeleteConfirmTitle.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufgabe löschen?'**
|
||||
String get taskDeleteConfirmTitle;
|
||||
|
||||
/// No description provided for @taskDeleteConfirmMessage.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Die Aufgabe wird unwiderruflich gelöscht.'**
|
||||
String get taskDeleteConfirmMessage;
|
||||
|
||||
/// No description provided for @taskDeleteConfirmAction.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Löschen'**
|
||||
String get taskDeleteConfirmAction;
|
||||
|
||||
/// No description provided for @taskEmptyTitle.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Noch keine Aufgaben'**
|
||||
String get taskEmptyTitle;
|
||||
|
||||
/// No description provided for @taskEmptyMessage.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Erstelle die erste Aufgabe für diesen Raum.'**
|
||||
String get taskEmptyMessage;
|
||||
|
||||
/// No description provided for @taskEmptyAction.
|
||||
///
|
||||
/// In de, this message translates to:
|
||||
/// **'Aufgabe erstellen'**
|
||||
String get taskEmptyAction;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -103,4 +103,65 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get cancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get taskFormCreateTitle => 'Aufgabe erstellen';
|
||||
|
||||
@override
|
||||
String get taskFormEditTitle => 'Aufgabe bearbeiten';
|
||||
|
||||
@override
|
||||
String get taskFormNameLabel => 'Aufgabenname';
|
||||
|
||||
@override
|
||||
String get taskFormNameHint => 'z.B. Staubsaugen, Fenster putzen...';
|
||||
|
||||
@override
|
||||
String get taskFormNameRequired => 'Bitte einen Namen eingeben';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyLabel => 'Wiederholung';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyCustom => 'Benutzerdefiniert';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyEvery => 'Alle';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyUnitDays => 'Tage';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyUnitWeeks => 'Wochen';
|
||||
|
||||
@override
|
||||
String get taskFormFrequencyUnitMonths => 'Monate';
|
||||
|
||||
@override
|
||||
String get taskFormEffortLabel => 'Aufwand';
|
||||
|
||||
@override
|
||||
String get taskFormDescriptionLabel => 'Beschreibung (optional)';
|
||||
|
||||
@override
|
||||
String get taskFormDueDateLabel => 'Erstes Fälligkeitsdatum';
|
||||
|
||||
@override
|
||||
String get taskDeleteConfirmTitle => 'Aufgabe löschen?';
|
||||
|
||||
@override
|
||||
String get taskDeleteConfirmMessage =>
|
||||
'Die Aufgabe wird unwiderruflich gelöscht.';
|
||||
|
||||
@override
|
||||
String get taskDeleteConfirmAction => 'Löschen';
|
||||
|
||||
@override
|
||||
String get taskEmptyTitle => 'Noch keine Aufgaben';
|
||||
|
||||
@override
|
||||
String get taskEmptyMessage => 'Erstelle die erste Aufgabe für diesen Raum.';
|
||||
|
||||
@override
|
||||
String get taskEmptyAction => 'Aufgabe erstellen';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user