Flutter permission_handler仅一行代码解决授权

本文由动哒公众号(dongda_5g),QQ群(174353204)提供,欢迎关注获取技术支持,有任何问题群里都会回复。

最近flutter 1.17出来了,初步体验了下,感觉非常好,首先控制台一堆无用的错误输出没有了(用过1.12的小伙伴懂的)。

那最近在将项目迁移到1.17的flutter上,出现了好多的问题,比如发现permission_handler这个升级了,变化的还挺多,咱们这篇小短文来讲讲permission_handler。

先来看一个小demo:

  ///检查是否有权限
  checkPermission() async {
    //检查是否已有读写内存权限
    PermissionStatus status = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);

    //判断如果还没拥有读写权限就申请获取权限
    if(status != PermissionStatus.granted){
      var map = await PermissionHandler().requestPermissions([PermissionGroup.storage]);
      if(map[PermissionGroup.storage] != PermissionStatus.granted){
        return false;
      }
    }
  }

上面这段代码是获取存储授权的方法,使用的是permission_handler: ^4.3.0,现在咱们看看5.0.0版本的。


  // 检查是否有权限
  checkPermission() async {

    // 检查是否已有读写内存的权限
    bool status = await Permission.storage.isGranted;

    //判断如果还没拥有读写权限就申请获取权限
    if(!status) {
      return await Permission.storage.request().isGranted;
    }
  }

对比下,发现咱们可以省去授权之后的结果检查,直接Permission.storage.request().isGranted的结果就是是否授权的结果。

这个还是太麻烦了,咱们再看下更简化的。


    if(await Permission.storage.request().isGranted) {
      // 干你该干的事
    }

在Permission上调用request()以请求它,如果以前已授予它,则什么也不会发生,如果没有授权,则提示用户去授权,然后返回授权之后的结果,一个语句解决,再也不用单独写个方法了。

赶紧升级到最新的版本吧,小伙伴们。

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_29003023/article/details/106140711