import 'package:latlong2/latlong.dart'; class Stop { final int? id; final String street; final String houseNumber; final String notes; final List 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? 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 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 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(",")})'; }