re factor rog
This commit is contained in:
59
lib/features/data/user_location.dart
Normal file
59
lib/features/data/user_location.dart
Normal file
@ -0,0 +1,59 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
|
||||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||
class UserLocation {
|
||||
final double latitude;
|
||||
final double longitude;
|
||||
final DateTime timestamp;
|
||||
UserLocation(
|
||||
{required this.latitude,
|
||||
required this.longitude,
|
||||
required this.timestamp});
|
||||
|
||||
static UserLocation empty() {
|
||||
return UserLocation(
|
||||
latitude: 0.0, longitude: 0.0, timestamp: DateTime.now());
|
||||
}
|
||||
|
||||
factory UserLocation.fromPosition(Position position) {
|
||||
return UserLocation(
|
||||
latitude: position.latitude,
|
||||
longitude: position.longitude,
|
||||
timestamp: position.timestamp);
|
||||
}
|
||||
|
||||
UserLocation copyWith({
|
||||
double? latitude,
|
||||
double? longitude,
|
||||
DateTime? timestamp,
|
||||
}) {
|
||||
return UserLocation(
|
||||
latitude: latitude ?? this.latitude,
|
||||
longitude: longitude ?? this.longitude,
|
||||
timestamp: timestamp ?? this.timestamp,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return <String, dynamic>{
|
||||
'latitude': latitude,
|
||||
'longitude': longitude,
|
||||
'timestamp': timestamp.millisecondsSinceEpoch,
|
||||
};
|
||||
}
|
||||
|
||||
factory UserLocation.fromMap(Map<String, dynamic> map) {
|
||||
return UserLocation(
|
||||
latitude: map['latitude'] as double,
|
||||
longitude: map['longitude'] as double,
|
||||
timestamp: DateTime.fromMillisecondsSinceEpoch(map['timestamp'] as int),
|
||||
);
|
||||
}
|
||||
|
||||
String toJson() => json.encode(toMap());
|
||||
|
||||
factory UserLocation.fromJson(String source) =>
|
||||
UserLocation.fromMap(json.decode(source) as Map<String, dynamic>);
|
||||
}
|
||||
Reference in New Issue
Block a user