我试图在将来的构建中获得距离两个坐标的成功,但是正在寻找如何获取代码的body:的Text()小部件中返回的“ kmDis”值。请在下面查看我的完整代码。
Future<String> getDistance(String lat, String lng) async {
final distanceInMeters = await Geolocator().distanceBetween(
currentLocation.latitude,
currentLocation.longitude,
double.parse(lat),
double.parse(lng));
double distancekm = distanceInMeters / 1000;
String kmDis = distancekm.toStringAsFixed(1);
//int finalkm = distancekm.round();
return kmDis;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body:Text("i want to return my kmDis value as string here.")
)
}
嗯,您正在处理一个返回Future
的函数。
因此,您可以使用FutureBuilder
来操作此功能并响应不同的状态。
这是一个简单的代码,处理类似的情况。
someFutureStringFunction()
是您的getDistance()
。
也请查看里面的FutureBuilder
小部件Scaffold()
Future<String> someFutureStringFunction() async {
return Future.delayed(const Duration(seconds: 1), () => "someText");
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: someFutureStringFunction(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
} else {
return Text('Loading...');
}
},
),
);
}