INFRA: Set Up Project.

This commit is contained in:
2025-11-28 11:10:49 +05:00
commit c798279f7d
609 changed files with 77436 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
import 'package:cloud_firestore/cloud_firestore.dart';
class DistanceDocSnapshot<T> {
final DocumentSnapshot<T> documentSnapshot;
final double kmDistance;
DistanceDocSnapshot({
required this.documentSnapshot,
required this.kmDistance,
});
}

View File

@@ -0,0 +1,60 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import '../utils/math.dart';
class GeoFirePoint {
static final MathUtils _util = MathUtils();
double latitude, longitude;
GeoFirePoint(this.latitude, this.longitude);
/// return geographical distance between two Co-ordinates
static double kmDistanceBetween({required Coordinates to, required Coordinates from}) {
return MathUtils.kmDistance(to, from);
}
/// return neighboring geo-hashes of [hash]
static List<String> neighborsOf({required String hash}) {
return _util.neighbors(hash);
}
/// return hash of [GeoFirePoint]
String get hash {
return _util.encode(latitude, longitude, 9);
}
/// return all neighbors of [GeoFirePoint]
List<String> get neighbors {
return _util.neighbors(hash);
}
/// return [GeoPoint] of [GeoFirePoint]
GeoPoint get geoPoint {
return GeoPoint(latitude, longitude);
}
Coordinates get coords {
return Coordinates(latitude, longitude);
}
/// return distance between [GeoFirePoint] and ([lat], [lng])
double kmDistance({required double lat, required double lng}) {
return kmDistanceBetween(from: coords, to: Coordinates(lat, lng));
}
Map<String, Object> get data {
return {'geopoint': geoPoint, 'geohash': hash};
}
/// haversine distance between [GeoFirePoint] and ([lat], [lng])
double haversineDistance({required double lat, required double lng}) {
return GeoFirePoint.kmDistanceBetween(from: coords, to: Coordinates(lat, lng));
}
}
class Coordinates {
double latitude;
double longitude;
Coordinates(this.latitude, this.longitude);
}