问题描述
我一直在尝试使用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 (将#修改为@)