- Flutter/Dart (iOS + Android), Riverpod, go_router, i18n via ARB (deutsch) - Feature-Struktur: today, plants, locations, household (V2-Platzhalter), settings - Intervall-Modell: Aufgaben werden aus lastWatered/lastFertilized + Intervall berechnet - In-Memory-Demo-Daten, Firebase-Anbindung folgt im nächsten Block - Doku: Architektur, Firebase-Einrichtung, Forgejo-Git-Hosting Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25 lines
674 B
Dart
25 lines
674 B
Dart
import 'package:flutter/foundation.dart';
|
|
|
|
import '../../plants/domain/plant.dart';
|
|
|
|
enum CareTaskType { watering, fertilizing }
|
|
|
|
/// Eine heute fällige (oder überfällige) Pflegeaufgabe.
|
|
///
|
|
/// Aufgaben werden nicht gespeichert, sondern aus den Pflanzen berechnet:
|
|
/// Fälligkeit = letzte Erledigung + Intervall (Intervall-Modell).
|
|
@immutable
|
|
class DueTask {
|
|
const DueTask({
|
|
required this.plant,
|
|
required this.type,
|
|
required this.dueDate,
|
|
});
|
|
|
|
final Plant plant;
|
|
final CareTaskType type;
|
|
final DateTime dueDate;
|
|
|
|
/// 0 = heute fällig, 1 = seit gestern überfällig, usw.
|
|
int overdueDays(DateTime today) => today.difference(dueDate).inDays;
|
|
}
|