本文由动哒公众号(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()以请求它,如果以前已授予它,则什么也不会发生,如果没有授权,则提示用户去授权,然后返回授权之后的结果,一个语句解决,再也不用单独写个方法了。
赶紧升级到最新的版本吧,小伙伴们。