Являются ли DocumentSnapshots изменчивыми? Мне нужно добавить, как далеко находится точка GPS от GPS пользователя, прежде чем отправлять Stream в build (). Я пробовал:
- document.data.addAll ({'distance': distance});
- document.data ['distance'] = distance;
- document.data.update ('distance', (value) => distance);
Но они не прилипают, когда я печатаю поле,
print("Distance now assigned to record? ${document.data['distance']}");
это не сохранило значение расстояния. Есть ли способ сделать эту работу? Я хочу выполнить обработку, когда она прибудет, а не в виджете build (), чтобы сохранить код чище.
localJobsStream = geo
.collection(collectionRef: myFirestore.collection('JobsMeta'))
.within(
center: usersAddressGeoFirePoint,
radius: 1000,
field: 'position',
strictMode: true);
localJobsStream.listen((List<DocumentSnapshot> documentList) {
double startLatitude = documentList[0].data['position']['geopoint'].latitude;
double startLongitude = documentList[0].data['position']['geopoint'].longitude;
double distance = usersAddressGeoFirePoint.distance(lat: startLatitude, lng: startLongitude);
for (DocumentSnapshot document in documentList) {
document.data.update('distance', (distance) => distance);
}
});
Я на самом деле использую плагин Flutter GeoFlutterFire , который якобы сохраняет расстояние в пакете Snapshot .data, но, насколько я вижу, это не так. Если каким-то чудом вы обнаружили, как вызвать это, тогда это решило бы, как наиболее точно определить расстояние.