Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .flutter-plugins
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# This is a generated file; do not edit or check into version control.
cloud_firestore=C:\\Users\\datde\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\cloud_firestore-3.3.0\\
cloud_firestore_web=C:\\Users\\datde\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\cloud_firestore_web-2.7.0\\
firebase_core=C:\\Users\\datde\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_core-1.19.2\\
firebase_core_web=C:\\Users\\datde\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\firebase_core_web-1.7.0\\
1 change: 1 addition & 0 deletions .flutter-plugins-dependencies
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-3.3.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-1.19.2\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"cloud_firestore","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-3.3.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-1.19.2\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-3.3.0\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-1.19.2\\\\","native_build":true,"dependencies":[]}],"linux":[],"windows":[],"web":[{"name":"cloud_firestore_web","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore_web-2.7.0\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\Users\\\\datde\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core_web-1.7.0\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["cloud_firestore_web","firebase_core"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]}],"date_created":"2022-07-19 11:11:44.626077","version":"3.0.4"}
45 changes: 41 additions & 4 deletions lib/src/collection/base.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class BaseGeoFireCollectionRef<T> {
late final Stream<QuerySnapshot<T>>? _stream;

BaseGeoFireCollectionRef(this._collectionReference) {
_stream = _createStream(_collectionReference).shareReplay(maxSize: 1);
_stream = _createStream(_collectionReference, true).shareReplay(maxSize: 1);
}

/// return QuerySnapshot stream
Expand Down Expand Up @@ -84,20 +84,56 @@ class BaseGeoFireCollectionRef<T> {
}
}

Future<List<DocumentSnapshot<T>>> get({
required GeoFirePoint center,
required double radius,
required String field,
required GeoPoint? Function(T t) geopointFrom,
required bool? strictMode,
}) {
return protectedWithin(
center: center,
field: field,
geopointFrom: geopointFrom,
radius: radius,
strictMode: strictMode,
live: false,
).first;
}

Future<List<DistanceDocSnapshot<T>>> getWithDistance({
required GeoFirePoint center,
required double radius,
required String field,
required GeoPoint? Function(T t) geopointFrom,
required bool? strictMode,
}) {
return protectedWithinWithDistance(
center: center,
field: field,
geopointFrom: geopointFrom,
radius: radius,
strictMode: strictMode,
live: false,
).first;
}

@protected
Stream<List<DocumentSnapshot<T>>> protectedWithin({
required GeoFirePoint center,
required double radius,
required String field,
required GeoPoint? Function(T t) geopointFrom,
required bool? strictMode,
bool live = true,
}) =>
protectedWithinWithDistance(
center: center,
radius: radius,
field: field,
geopointFrom: geopointFrom,
strictMode: strictMode,
live: live,
).map((snapshots) =>
snapshots.map((snapshot) => snapshot.documentSnapshot).toList());

Expand All @@ -110,6 +146,7 @@ class BaseGeoFireCollectionRef<T> {
required String field,
required GeoPoint? Function(T t) geopointFrom,
required bool? strictMode,
bool live = true,
}) {
final nonNullStrictMode = strictMode ?? false;

Expand All @@ -119,7 +156,7 @@ class BaseGeoFireCollectionRef<T> {

final queries = area.map((hash) {
final tempQuery = _queryPoint(hash, field);
return _createStream(tempQuery).map((querySnapshot) {
return _createStream(tempQuery, live).map((querySnapshot) {
return querySnapshot.docs;
});
});
Expand Down Expand Up @@ -193,7 +230,7 @@ class BaseGeoFireCollectionRef<T> {
}

/// create an observable for [ref], [ref] can be [Query] or [CollectionReference]
Stream<QuerySnapshot<T>> _createStream(Query<T> ref) {
return ref.snapshots();
Stream<QuerySnapshot<T>> _createStream(Query<T> ref, bool live) {
return live ? ref.snapshots() : ref.get().asStream();
}
}
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ dependencies:
sdk: flutter
cloud_firestore: ^3.1.6
rxdart: ^0.27.3
flutter_lints: ^1.0.0
flutter_lints: ^2.0.0

dev_dependencies:
flutter_test:
Expand Down