import 'package:fires_flutter/objectIdUtils.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:objectid/objectid.dart'; part 'yourLocation.g.dart'; @JsonSerializable(nullable: false) class YourLocation { @JsonKey(toJson: objectIdToJson, fromJson: objectIdFromJson) ObjectId id; final double lat; final double lon; String description; bool subscribed; int distance; int currentNumFires; factory YourLocation.fromJson(Map json) => _$YourLocationFromJson(json); static YourLocation noLocation = new YourLocation(lat: 0.0, lon: 0.0); static const int withoutStats = null; YourLocation( {this.id, required this.lat, required this.lon, this.description, this.distance = 10, int currentNumFires = withoutStats, this.subscribed =false}) { } Map toJson() => _$YourLocationToJson(this); YourLocation copyWith( {id, lat, lon, description, distance, currentNumFires, subscribed}) { return new YourLocation( id: id ?? this.id, lat: lat ?? this.lat, lon: lon ?? this.lon, description: description ?? this.description, distance: distance ?? this.distance, currentNumFires: currentNumFires ?? this.currentNumFires, subscribed: subscribed ?? this.subscribed); } @override bool operator ==(Object other) => identical(this, other) || other is YourLocation && runtimeType == other.runtimeType && id == other.id && lat == other.lat && lon == other.lon && description == other.description && subscribed == other.subscribed && currentNumFires == other.currentNumFires && distance == other.distance; @override int get hashCode => id.hashCode ^ lat.hashCode ^ lon.hashCode ^ description.hashCode ^ subscribed.hashCode ^ currentNumFires.hashCode ^ distance.hashCode; @override String toString() { return 'YourLocation {id: $id, lat: $lat, lon: $lon, description: $description, subscribed: $subscribed, distance: $distance, currentNumFires: $currentNumFires}'; } }