获取 Flutter Web 的用户位置 [英] Get user's location for Flutter Web

查看:26
本文介绍了获取 Flutter Web 的用户位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm currently using the Flutter Geolocator Plugin to access user's location (latitude/longitude), but it seems like it does not work for the web yet. I tried to find something to retrieve the user's location in Flutter for web, but I couldn't find it.

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

Has anyone already tried/found something to do the job?

推荐答案

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

To be able to retrieve the position for the web part I had to use https://pub.dev/packages/js to expose the JavaScript API and combine it with https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API.

所以这里的样子:

  1. 首先创建一个文件(例如:locationJs.dart)来暴露JS函数:

  1. First create a file (ex: locationJs.dart) to expose the JS function :

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

  • 调用新创建的文件

  • Call the newly created file

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

  • 这篇关于获取 Flutter Web 的用户位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆