Flutter - 如何在我未来的构建器文本小部件中获取值 return

Flutter - How to get value return in my future builder text widget in body

我试图在未来的构建中获取两个坐标的距离,这是成功的,但我正在寻找如何获取返回的值 "kmDis" 在我的代码的 body: 中的 Text() 小部件中。在下面查看我的完整代码。

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.")
)

  }

好吧,您正在处理 return 一个 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...');
          }
        },
      ),
    );
  }

您可以创建两种方法,一种用于提取您放入变量中的数据,另一种类似于 getter(在我的例子中,我需要使用插件 [=20 访问安全值=] 不使用 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,
    )