Waaaay big enchancements
This commit is contained in:
@@ -5,20 +5,29 @@ class HomeConfig {
|
||||
final String name; // человекочитаемое название ("Квартира", "Дача")
|
||||
final String url; // адрес сервера (например ignis.akokos.ru)
|
||||
final String apiKey; // ключ авторизации
|
||||
final double? latitude; // GPS-широта дома (для гео-автоматизации)
|
||||
final double? longitude; // GPS-долгота дома (для гео-автоматизации)
|
||||
|
||||
HomeConfig({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.url,
|
||||
required this.apiKey,
|
||||
this.latitude,
|
||||
this.longitude,
|
||||
});
|
||||
|
||||
/// Есть ли координаты у дома
|
||||
bool get hasCoordinates => latitude != null && longitude != null;
|
||||
|
||||
/// Сериализация в JSON для хранения в SharedPreferences
|
||||
Map<String, dynamic> toJson() => {
|
||||
'id': id,
|
||||
'name': name,
|
||||
'url': url,
|
||||
'apiKey': apiKey,
|
||||
if (latitude != null) 'latitude': latitude,
|
||||
if (longitude != null) 'longitude': longitude,
|
||||
};
|
||||
|
||||
factory HomeConfig.fromJson(Map<String, dynamic> json) => HomeConfig(
|
||||
@@ -26,13 +35,25 @@ class HomeConfig {
|
||||
name: json['name'] as String,
|
||||
url: json['url'] as String,
|
||||
apiKey: json['apiKey'] as String,
|
||||
latitude: (json['latitude'] as num?)?.toDouble(),
|
||||
longitude: (json['longitude'] as num?)?.toDouble(),
|
||||
);
|
||||
|
||||
/// Копирование с изменениями
|
||||
HomeConfig copyWith({String? name, String? url, String? apiKey}) => HomeConfig(
|
||||
HomeConfig copyWith({
|
||||
String? name,
|
||||
String? url,
|
||||
String? apiKey,
|
||||
double? latitude,
|
||||
double? longitude,
|
||||
bool clearCoordinates = false,
|
||||
}) =>
|
||||
HomeConfig(
|
||||
id: id,
|
||||
name: name ?? this.name,
|
||||
url: url ?? this.url,
|
||||
apiKey: apiKey ?? this.apiKey,
|
||||
latitude: clearCoordinates ? null : (latitude ?? this.latitude),
|
||||
longitude: clearCoordinates ? null : (longitude ?? this.longitude),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user