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,
)
我试图在未来的构建中获取两个坐标的距离,这是成功的,但我正在寻找如何获取返回的值 "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,
)