概述
最近Flutter项目中需要使用到高德定位,需要申请定位权限,在这里使用到了permission_handler 。遇到了一些问题记录一下(以定位权限为例)。
- 获取插件
在 pubspec.yaml 文件配置
permission_handler | Flutter Packagedependencies: permission_handler: ^8.2.5
- 配置权限信息
在Info.plist 文件配置<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>运单打卡需要获取您的位置信息</string> <key>NSLocationAlwaysUsageDescription</key> <string>运单打卡需要获取您的位置信息</string> <key>NSLocationUsageDescription</key> <string>运单打卡需要获取您的位置信息</string> <key>NSLocationWhenInUseUsageDescription</key> <string>运单打卡需要获取您的位置信息</string>
在Podfile文件配置(这一点要注意)
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| # You can remove unused permissions here # for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/master/permission_handler/ios/Classes/PermissionHandlerEnums.h # e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0' config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] 'PERMISSION_LOCATION=1', ] end end end
-
调用申请权限
/// 动态申请定位权限 void requestPermission() async { // 申请权限 bool hasLocationPermission = await requestLocationPermission(); if (hasLocationPermission) { // 权限申请通过 } else { } } /// 申请定位权限 /// 授予定位权限返回true, 否则返回false Future<bool> requestLocationPermission() async { //获取当前的权限 var status = await Permission.location.status; if (status == PermissionStatus.granted) { //已经授权 return true; } else { //未授权则发起一次申请 status = await Permission.location.request(); if (status == PermissionStatus.granted) { return true; } else { return false; } } }
4. 成功调起申请权限
最后
以上就是大力期待为你收集整理的Flutter 使用permission_handler 申请权限的全部内容,希望文章能够帮你解决Flutter 使用permission_handler 申请权限所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复