我有一个我有经度和纬度的对象列表,我想从这个列表中获取最接近我的位置的3个元素。 我创建类似这样的东西:
void _onGetAllStationsEvent(StationsEvent event) async {
final stationsList = await _getAllStationsUseCase.run();
final position = event.position;
stationsList.sort((a, b) => getDistance(getPosition(a.latitude, a.longitude), position).compareTo(getDistance(getPosition(b.latitude, b.longitude), position)));
statePipe.add(StationsState(stationsList.take(3).toList()));
}
LatLng getPosition(String lat, String lng){
return LatLng(double.parse(lat), double.parse(lng));
}
Future<double> getDistanceStream(LatLng loc, LatLng currentPos) async {
return await geolocator.distanceBetween(loc.lat, loc.lng, currentPos.lat, currentPos.lng);
}
double getDistance(LatLng loc, LatLng currentPos){
var distance = 0.0;
getDistanceStream(loc, currentPos).then((val) => distance = val);
return distance;
}
但这不起作用。有什么想法吗?