在Flutter Web应用程序上使用navigator.geolocation,js和flutter_bloc库

问题描述

我一直在尝试使用js dart库在Flutter Web应用程序中使用navigator.geolocation函数

我已遵循有关post的建议来集成JS库。 要点是如何从setState()更改为Bloc / Cubit并从异步js闭包中接收结果。

我找不到等待关闭执行结果的方法

下面的代码显示调用的顺序,完整的代码可以在我的github中看到

如果有人可以向我指出可能的解决方案,我将非常高兴

谢谢!

Future<Weather> fetchWeatherByLocation() async {
    Weather weather;
    final geoCubit = GeolocationCubit();
    var listen = geoCubit.listen((GeolocationState state) async {
      switch (state.runtimeType) {
        case GeolocationLoaded:
          var geolocationLoaded = state as GeolocationLoaded;

          // Placemark addressFromPosition = await _getAddressFromPosition(position);

          var response = await queryRemoteTemperature(
              geolocationLoaded.latitude,geolocationLoaded.longitude,WeatherRepository.part,WeatherRepository.apiKey);

          if (response.statusCode != 200) {
            throw NetworkException();
          }
          weather = Weather.fromJson("",json.decode(response.body));
          return weather;
          break;
      }
    });
    js.getCurrentPosition(allowInterop((pos) {
      var _latitude;
      var _longitude;
      _latitude = pos.coords.latitude;
      _longitude = pos.coords.longitude;
      geoCubit.setPosition(_latitude,_longitude);
      return;
    }));
    await listen.asFuture(weather);
    listen.cancel();
    return Future.value(weather);
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)