我目前正在使用 Flutter 地理定位器插件来访问用户的位置(纬度/经度(,但似乎它不适用于网络。我试图在 Flutter for web 中找到一些东西来检索用户的位置,但我找不到它。
有没有人已经尝试/找到一些东西来完成这项工作?
为了能够检索 Web 部件的位置,我必须使用 https://pub.dev/packages/js 公开JavaScript API并将其与 https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API 相结合。
所以这里看起来像:
-
首先创建一个文件(例如:locationJs.dart(来公开JS函数:
@JS('navigator.geolocation') // navigator.geolocation namespace library jslocation; // library name can be whatever you want import "package:js/js.dart"; @JS('getCurrentPosition') // Accessing method getCurrentPosition from Geolocation API external void getCurrentPosition(Function success(GeolocationPosition pos)); @JS() @anonymous class GeolocationCoordinates { external double get latitude; external double get longitude; external double get altitude; external double get accuracy; external double get altitudeAccuracy; external double get heading; external double get speed; external factory GeolocationCoordinates( {double latitude, double longitude, double altitude, double accuracy, double altitudeAccuracy, double heading, double speed}); } @JS() @anonymous class GeolocationPosition { external GeolocationCoordinates get coords; external factory GeolocationPosition({GeolocationCoordinates coords}); }
-
调用新创建的文件
import 'package:Shared/locationJs.dart'; success(pos) { try { print(pos.coords.latitude); print(pos.coords.longitude); } catch (ex) { print("Exception thrown : " + ex.toString()); } } _getCurrentLocation() { if (kIsWeb) { getCurrentPosition(allowInterop((pos) => success(pos))); } }