Flutter - Как вернуть значение в моем текстовом виджете будущего строителя в теле - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь получить координату расстояния два в будущей сборке, которая была успешной, но я ищу, как получить значение, возвращаемое «kmDis» в виджете 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.")
)

  }

1 Ответ

1 голос
/ 05 апреля 2020

Ну, вы имеете дело с функцией, которая возвращает 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...');
          }
        },
      ),
    );
  }
...