Flutter - 如何在我的未来构建器文本小部件中获得价值回报

Posted

技术标签:

【中文标题】Flutter - 如何在我的未来构建器文本小部件中获得价值回报【英文标题】:Flutter - How to get value return in my future builder text widget in body 【发布时间】:2020-07-17 18:08:04 【问题描述】:

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

  

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

您可以创建两种方法,一种是提取放入变量中的数据,另一种是像 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,
    )

【讨论】:

以上是关于Flutter - 如何在我的未来构建器文本小部件中获得价值回报的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中使用流构建器刷新小部件

Flutter:如何在构造函数中传递值,以便我可以重用我的小部件?

Flutter 中 ChangeNotifier 的构建器小部件

Flutter 应用程序中我的文本小部件内部的额外间距

Flutter TabBarView 不断调用构建器

如何在 Flutter 小部件测试中等待未来完成?