Files
rental_income_tracker/lib/models/app_settings.dart
T
hans fc3cbb0b5d Set default rent
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-19 20:31:26 +01:00

61 lines
1.8 KiB
Dart

class AppSettings {
static const double kDefaultRentUsd = 2350;
AppSettings({
required this.rentUsd,
required this.occupied,
this.notOccupiedFromYearMonth,
this.localFallbackHour = 9,
this.localQuietHourStart = 23,
});
final double rentUsd;
final bool occupied;
final String? notOccupiedFromYearMonth;
final int localFallbackHour;
final int localQuietHourStart;
factory AppSettings.defaults() {
return AppSettings(rentUsd: kDefaultRentUsd, occupied: true);
}
AppSettings copyWith({
double? rentUsd,
bool? occupied,
String? notOccupiedFromYearMonth,
bool clearNotOccupiedFromYearMonth = false,
int? localFallbackHour,
int? localQuietHourStart,
}) {
return AppSettings(
rentUsd: rentUsd ?? this.rentUsd,
occupied: occupied ?? this.occupied,
notOccupiedFromYearMonth: clearNotOccupiedFromYearMonth
? null
: (notOccupiedFromYearMonth ?? this.notOccupiedFromYearMonth),
localFallbackHour: localFallbackHour ?? this.localFallbackHour,
localQuietHourStart: localQuietHourStart ?? this.localQuietHourStart,
);
}
Map<String, dynamic> toJson() {
return {
'rentUsd': rentUsd,
'occupied': occupied,
'notOccupiedFromYearMonth': notOccupiedFromYearMonth,
'localFallbackHour': localFallbackHour,
'localQuietHourStart': localQuietHourStart,
};
}
factory AppSettings.fromJson(Map<String, dynamic> json) {
return AppSettings(
rentUsd: (json['rentUsd'] ?? 0).toDouble(),
occupied: json['occupied'] ?? true,
notOccupiedFromYearMonth: json['notOccupiedFromYearMonth'] as String?,
localFallbackHour: json['localFallbackHour'] ?? 9,
localQuietHourStart: json['localQuietHourStart'] ?? 23,
);
}
}