- 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>
41 lines
1.3 KiB
Dart
41 lines
1.3 KiB
Dart
/// 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}';
|
|
}
|