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:如何在构造函数中传递值,以便我可以重用我的小部件?