【问题标题】:Get user's location for Flutter Web [closed]获取 Flutter Web 的用户位置 [关闭]
【发布时间】:2020-05-29 06:04:11
【问题描述】:

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

有没有人已经尝试/找到了可以做这项工作的东西?

【问题讨论】:

    标签: flutter dart geolocation flutter-web


    【解决方案1】:

    为了能够检索我必须使用的 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)));
                      }
            }
      

    【讨论】:

    • 非常感谢您一直在寻找这个
    • 你能帮帮我吗?我收到错误:“NoSuchMethodError:试图调用非函数,例如 null:'geolocation.getCurrentPosition'”
    • 嗨..这是一个很好的答案,它对我有用......你能给我一个关于你创建 locationJs.dart 的开始方式的指导吗?将它与 api js 结合起来?
    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多