获取用户的位置 Flutter Web



我目前正在使用 Flutter 地理定位器插件来访问用户的位置(纬度/经度(,但似乎它不适用于网络。我试图在 Flutter for web 中找到一些东西来检索用户的位置,但我找不到它。

有没有人已经尝试/找到一些东西来完成这项工作?

为了能够检索 Web 部件的位置,我必须使用 https://pub.dev/packages/js 公开JavaScript API并将其与 https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API 相结合。

所以这里看起来像:

  1. 首先创建一个文件(例如: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});
    }
    
  2. 调用新创建的文件

    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)));
    }
    }
    

相关内容

  • 没有找到相关文章

最新更新