1

我试图在成功的未来构建中获取距离二坐标,但我正在寻找如何在我的代码的 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.")
)

  }

4

2 回答 2

6

好吧,您正在处理一个返回 a 的函数Future

因此,您可以使用 aFutureBuilder来操作此功能并响应不同的状态。

这是一个简单的代码,它处理类似的情况。

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...');
          }
        },
      ),
    );
  }
于 2020-04-05T19:59:55.067 回答
0

您可以创建两种方法,一种是提取放入变量中的数据,另一种是像 getter 一样(在我的情况下,我需要使用插件flutter_secure_storage访问安全值而不使用Futurebuilder

mixin SecureStorageMethods {
 String keyValue;
 Future<String> _getFromSecureStorage(String key) async {
 keyValue = await slL<FlutterSecureStorage>().read(key: key);
 return keyValue;
}

String getSecureValue(String key) {
 _getFromSecureStorage(key);
 return keyValue;
 }
}

所以我调用我的代码

Text(
      getSecureValue(YOUR_KEY),
      style: OurStyle.textFieldStyle,
    )
于 2020-06-22T12:17:30.213 回答