flutter定位简单工具类

这篇具有很好参考价值的文章主要介绍了flutter定位简单工具类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import 'package:permission_handler/permission_handler.dart';

class PermissionUtil {
  /// 获取用户定位权限
  static Future<bool> getLocationStatus() async {
    Map<Permission, PermissionStatus> statuses = await [
      Permission.location,
    ].request();

    return statuses[Permission.location].isGranted;
  }

  //判断是否已经获取了位置权限授权
  static Future<bool> judgeLocationAuth() async {
    var status = await Permission.locationWhenInUse.status;
    if (status == PermissionStatus.granted) {
      return true;
    }else {
      return false;
    }
  }

//判断手机是否开启了定位服务
 static Future<bool> serviceEnabled() async {
   bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
   return serviceEnabled;
  }

//1.获取位置信息
Future<Position> _determinePosition() async {
    bool serviceEnabled;
    LocationPermission permission;

    //判断手机是否开启定位服务
    serviceEnabled = await Geolocator.isLocationServiceEnabled();
    //位置服务是否启用
    if (!serviceEnabled) {

      return Future.error('Location services are disabled.');
    }

    //获取位置位置权限

    /*bool locationAuth = await _locationAuthDialog();
    if(locationAuth){

    }*/
    permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission == LocationPermission.denied) {
        return Future.error('Location permissions are denied');
      }
    }
    //位置权限是否永久拒绝
    if (permission == LocationPermission.deniedForever) {
      return Future.error(
          'Location permissions are permanently denied, we cannot request permissions.');
    }

    return await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.best,forceAndroidLocationManager: true);
  }

//2.从经纬度编码成地址
getAddressFromLatLng() async{
    Position position = await _determinePosition();
    print('纬度:${position.latitude}   经度:${position.longitude} ');
    List<Placemark> placeMark = await placemarkFromCoordinates(position.latitude, position.longitude);
    print('地址:${placeMark[0].administrativeArea} ${placeMark[0].locality}  ${placeMark[0].subLocality} ${placeMark[0].subAdministrativeArea} ${placeMark[0].thoroughfare} ${placeMark[0].subThoroughfare} ${placeMark[0].name} ${placeMark[0].name}');
    CommonConfig.lat = position.latitude;
    CommonConfig.lng = position.longitude;
    CommonConfig.currentCityName = placeMark[0].locality;
    return {
      "provinceName": placeMark[0].administrativeArea,
      "cityName": placeMark[0].locality,
      "districtName": placeMark[0].subLocality,
    };
  }

}

文章来源地址https://www.toymoban.com/news/detail-664396.html

到了这里,关于flutter定位简单工具类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android应用-flutter使用Positioned将控件定位到底部中间

    要将Positioned定位到屏幕底部中间的位置,你可以使用MediaQuery来获取屏幕的高度,然后设置Positioned的bottom属性和left或right属性,一般我们left和right都会设置一个值让控制置于合适的位置,那么如何使其位于底部中央? 以下是一个示例代码: 在这个例子中,Positioned包含一个具

    2024年02月03日
    浏览(49)
  • Selenium:定位(二:By模块定位,简单无基础)

    目录 一、简介: 二、BY模块 三、find_element方法和find_elements方法 1)、find_element方法和find_elements方法的区别 2)、find_element方法和find_elements方法搭配BY模块使用         (1)find_element方法:         (2)find_elements方法: 三、测试用例 1)、定位逻辑 2)、实际用例 测试代码

    2024年01月15日
    浏览(77)
  • 简单的Xpath定位

    网页F12直接copy就不说了,讲讲其他的一些方法。 串联查找 //示例HTML: 先定位一个元素,再在其基础上定位一个元素。示例代码: 通过父元素定位子元素 //示例代码: 具体使用方法示例为:child::div,即轴名称::标签名,,挑下图一些用实例进行分析 Xpath通过父元素定位bro

    2024年02月22日
    浏览(32)
  • flutter:webview_flutter的简单使用

    最近在研究如何在应用程序中嵌入Web视图,发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求,就使用了官方库,实现一些简单功能是完全ok的 不建议使用,因为效果不怎么样,当然也可能是我太菜不会用,下面这个问题就很难理解为什么会这样

    2024年02月12日
    浏览(49)
  • 【UE】简单实现屏幕UI定位

    实现效果 屏幕空间定位 场景空间定位 一般实现兴趣点(POI)有两种实现方法,场景空间UI定位和屏幕空间UI定位。 场景空间定位 :UI类似实例模型,位置和尺寸是相对于场景不变。大多适用于第一人称第三人称小场景。 屏幕空间定位 :UI大小固定,不会随场景的变化而改变

    2024年02月14日
    浏览(38)
  • flutter:webview_flutter和flutter_inappwebview的简单使用

    最近在研究如何在应用程序中嵌入Web视图,发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求,就使用了官方库,实现一些简单功能是完全ok的 不建议使用,因为效果不怎么样,当然也可能是我太菜不会用,下面这个问题就很难理解为什么会这样

    2024年02月12日
    浏览(55)
  • flutter getx 简单使用教程

    所以Flutter使用GetX真的很不错 为什么说什么GetX好用呢? 1、依赖注入 GetX是通过依赖注入的方式,存储相应的XxxGetxController;已经脱离了InheritedWidget那一套玩法,自己手动去管理这些实例,使用场景被大大拓展 2、跨页面交互 这绝对是GetX的一个优点!对于复杂的生产环境,跨

    2024年02月08日
    浏览(56)
  • Flutter:简单搞一个内容高亮

    内容高亮并不陌生,特别是在搜索内容页面,可以说四处可见,就拿掘金这个应用而言,针对某一个,我们搜索之后,与相同的内容,则会高亮展示,如下图所示: 如上的效果,在Flutter当中,实现起来可以说是无比的简单,毕竟原生的组件都给我们提供了,那

    2024年02月13日
    浏览(40)
  • Flutter TextField 输入框 简单使用

    创建方式一: 创建方式二: TextField 是一个 material design 风格的输入框,本身有多种属性,除此之外装饰器 InputDecoration 也有多种属性,但都比较简单,所以不必担心,且听我娓娓道来。 InputDecoration 属性 图标 图标有3种: 左侧外的图标 左侧内图标 右侧内图标 在右侧图标加了

    2024年02月08日
    浏览(44)
  • Flutter Dio 库的简单封装

    dio 库Flutter 中是比较流行的网络请求库。 其中在拦截器可以拦截请求,响应以及错误 权限验证:比如接口请求后端返回401未授权时可以跳到登录页,403跳到未授权页面; 异常监控:可以在拦截器处理异常,并且上报到异常监控后台或者发送异常预警消息; 缓存接口:可以对

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包