文章目录
我们在上一章回中介绍了局部动态列表相关的内容,本章回中将介绍权限管理包permission_hanadler.闲话休提,让我们一起Talk Flutter吧。
概念介绍
权限是使用某种功能的授权,比如使用手机上的相机就是获取相机相关的权限。在移动开发中,不论是Android还是IOS都需要进行权限管理,Flutter是跨平台的开发
框架,因此也需要权限管理,我们推荐使用permission_handler这个三方包来管理权限。该包提供了许多方法,方法我们申请权限,当然了还需要使用原生的配置才
能完成权限管理。本章回中将详细介绍如何使用该包来实现权限管理。
使用方法
- 在yaml文件中导入permission_handler包并且获取到本地项目中;
- 使用Android和IOS原生开发中的方法在权限配置文件配置需要管理的权限;
- 通过包中Permission类的status属性获取权限当前的状态,然后依据不同的状态做相应的操作;
- 如果没有获取到需要的权限。那么使用包中的request()方法去申请权限;
- request()方法返回Future对象,可以在申请完权限后查看权限的状态,或者打开某些开关,比如位置开关;
示例代码
void checkPermission() async {
var status = await Permission.bluetooth.status;
if(status.isDenied) {
requestPermission();
}
}
void requestPermission() async {
Map<Permission,PermissionStatus> permissionMap = await [
Permission.locationAlways,
Permission.bluetoothScan,
Permission.bluetoothConnect,
].request();
debugPrint("permission state: ${permissionMap[Permission.location]}");
}
在上面的代码中把查看权限状态和申请权限都封装成了独立的方法,这样方便项目使用。代码是以蓝牙和位置权限为例子的,大家可以试试其它的权限。此外,这里没有列
出原生配置文件中配置权限:Android在manifest.xlm文件配置,IOS在info.plist文件中配置。
经验分享
权限管理是一个非常烦人的操作,而且不同的系统版本对权限管理有不同的要求,IOS相对好一些,android的版本碎片化严重,需要适配不同的系统版本。Flutter没
有专门的权限配置文件,因此权限管理还是使用原生开发方式中的配置文件,开发者需要在原生配置文件中做权限配置,然后再使用文章中介绍的三方包申请权限和查看权
限状态。我的经验是如果想掌握好权限管理相关的知识,必须要掌握原生开发中的权限管理,然后再配合permission_handler包来申请权限。注意一下:Android的
配置文件分布在三个目录中:debug,release,profile。它们分别对应不同的软件版本,最好让这三个目录下的配置文件保持一致。
最后再来一个总结:权限管理的配置仍然在原生配置文件中,三方包只是帮助我们写了申请和查看权限状态的代码。
看官们,与"权限管理包permission_handler"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!