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

回到顶部