re factor rog

This commit is contained in:
2024-04-01 09:26:56 +05:30
parent dd36ab8399
commit edbf52825b
54 changed files with 2597 additions and 435 deletions

View 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>);
}