83 lines
2.0 KiB
Dart
83 lines
2.0 KiB
Dart
import 'package:latlong2/latlong.dart';
|
|
|
|
class Stop {
|
|
final int? id;
|
|
final String street;
|
|
final String houseNumber;
|
|
final String notes;
|
|
final List<String> newspapers;
|
|
final double lat;
|
|
final double lng;
|
|
final bool delivered;
|
|
final int sequence;
|
|
|
|
Stop({
|
|
this.id,
|
|
required this.street,
|
|
required this.houseNumber,
|
|
this.newspapers = const [],
|
|
required this.lat,
|
|
required this.lng,
|
|
this.delivered = false,
|
|
this.notes = '',
|
|
this.sequence = 0,
|
|
});
|
|
|
|
LatLng get location => LatLng(lat, lng);
|
|
|
|
Stop copyWith({
|
|
int? id,
|
|
String? street,
|
|
String? houseNumber,
|
|
List<String>? newspapers,
|
|
double? lat,
|
|
double? lng,
|
|
bool? delivered,
|
|
String? notes,
|
|
int? sequence,
|
|
}) {
|
|
return Stop(
|
|
id: id ?? this.id,
|
|
street: street ?? this.street,
|
|
houseNumber: houseNumber ?? this.houseNumber,
|
|
newspapers: newspapers ?? this.newspapers,
|
|
lat: lat ?? this.lat,
|
|
lng: lng ?? this.lng,
|
|
delivered: delivered ?? this.delivered,
|
|
notes: notes ?? this.notes,
|
|
sequence: sequence ?? this.sequence,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
if (id != null) 'id': id,
|
|
'street': street,
|
|
'house_number': houseNumber,
|
|
'newspapers': newspapers.join(','),
|
|
'lat': lat,
|
|
'lng': lng,
|
|
'delivered': delivered ? 1 : 0,
|
|
'notes': notes,
|
|
'sequence': sequence,
|
|
};
|
|
}
|
|
|
|
factory Stop.fromMap(Map<String, dynamic> map) {
|
|
return Stop(
|
|
id: map['id'] as int?,
|
|
street: map['street'] as String,
|
|
houseNumber: map['house_number'] as String,
|
|
newspapers: (map['newspapers'] as String?)?.split(',').where((x) => x.isNotEmpty).toList() ?? [],
|
|
lat: map['lat'] as double,
|
|
lng: map['lng'] as double,
|
|
delivered: map['delivered'] == 1,
|
|
notes: (map['notes'] as String?) ?? '',
|
|
sequence: map['sequence'] as int? ?? 0,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() => '$street $houseNumber (${newspapers.join(",")})';
|
|
}
|