Flutter-从rest api遍历经纬度列表以获取两个坐标之间的距离
在我的代码中,能够成功获取两个坐标(lAT和LNG)之间的距离,但是我的listview仅返回值列表之一的值。请在下面找到我的代码。
String lat = "";String lng = "";
Double distanceInKilometers = "";
Future getDistance() async {
distanceInMeters = await Geolocator().distanceBetween(
currentLocation.latitude, currentLocation.longitude, double.parse(lat), double.parse(lng));
distanceInKilometers = distanceInMeters.toInt() / 1000;
}
ListView.separated( itemCount: content.length,
itemBuilder: (context, position) {
lat = content[position].lat;
lng = content[position].lng;
return Container(
child: Column(
children: <Widget>[
new Text(distanceInKilometers.toString())
],),
))
回答:
我在您的代码中看到了多个错误。
首先,您的代码未编译
Double
Dart语言中的type是小写。- 您不应该
double
使用empty 初始化变量String
。
其次,将全局状态与异步调用一起使用。如果仅将参数传递给getDistance方法,那会更好。像这样:
Future<double> getDistance(double lat, double long) async { final distanceInMeters = await Geolocator().distanceBetween(
currentLocation.latitude,
currentLocation.longitude,
lat,
lng
);
return distanceInMeters / 1000;
}
最后,您应该使用FutureBuilder调用getDistance
:
ListView.separated( itemCount: content.length,
separatorBuilder: (context, position) {
// return a separator widget;
},
itemBuilder: (context, position) {
final current = content[position];
return FutureBuilder<String>(
future: getDistance(current.lat, current.long)
.then((value) => value.toString()),
builder: (context, snapshot) {
return Container(
child: Column(
children: <Widget>[new Text(snapshot.data)],
),
);
});
});
以上是 Flutter-从rest api遍历经纬度列表以获取两个坐标之间的距离 的全部内容, 来源链接: utcz.com/qa/428904.html