fix: Tour-Datum — Leer-Texte, veraltete Antworten, Kalenderfenster
- Leer-Ansichten (Auswählen, Sortieren, Beladen, Ausliefern) nennen den gewählten Tag statt immer „heute": „Für den 02.09.2026 ist keine Tour zugewiesen." (TourDayText). - TourBloc: Loads/Refreshes laufen nebenläufig; bei schnellem Datumswechsel konnte die langsamere Antwort des vorigen Tages die Tour des gewählten Tages überschreiben. Jetzt schreibt nur die jüngste Anfrage ihr Ergebnis. - Kalender reicht 90 statt 14 Tage zurück (z. B. nachimportierte Touren vom Monatsanfang). - Test: neuer Fahrer startet auf „heute", auch wenn der vorige einen anderen Tag gewählt hatte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
40
lib/feature/delivery/model/tour_day_text.dart
Normal file
40
lib/feature/delivery/model/tour_day_text.dart
Normal file
@ -0,0 +1,40 @@
|
||||
/// Formulierung des gewählten Tour-Tags für Fließtexte, z. B. in den
|
||||
/// Leer-Ansichten („Für heute ist keine Tour zugewiesen." bzw. „Für den
|
||||
/// 22.09.2026 …").
|
||||
///
|
||||
/// `null` als gewähltes Datum heißt „heute" (Server-Default, siehe
|
||||
/// `TourDateCubit`). Heute/morgen/gestern werden relativ zur Geräte-Uhr
|
||||
/// benannt, alle anderen Tage mit Datum.
|
||||
class TourDayText {
|
||||
const TourDayText._(this._relative, this.date);
|
||||
|
||||
factory TourDayText.of(DateTime? selected, {DateTime? now}) {
|
||||
final clock = now ?? DateTime.now();
|
||||
final today = DateTime(clock.year, clock.month, clock.day);
|
||||
final day = selected == null
|
||||
? today
|
||||
: DateTime(selected.year, selected.month, selected.day);
|
||||
final relative = switch (day.difference(today).inDays) {
|
||||
0 => 'heute',
|
||||
1 => 'morgen',
|
||||
-1 => 'gestern',
|
||||
_ => null,
|
||||
};
|
||||
return TourDayText._(relative, _format(day));
|
||||
}
|
||||
|
||||
final String? _relative;
|
||||
|
||||
/// Datum als „TT.MM.JJJJ".
|
||||
final String date;
|
||||
|
||||
/// Umstandsangabe: „heute" / „am 22.09.2026".
|
||||
String get when => _relative ?? 'am $date';
|
||||
|
||||
/// Nach „für": „heute" / „den 22.09.2026".
|
||||
String get afterFor => _relative ?? 'den $date';
|
||||
|
||||
static String _format(DateTime d) =>
|
||||
'${d.day.toString().padLeft(2, '0')}.'
|
||||
'${d.month.toString().padLeft(2, '0')}.${d.year}';
|
||||
}
|
||||
Reference in New Issue
Block a user