permission_engine.dart 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. //
  2. // import 'package:flutter/material.dart';
  3. // import 'package:permission_handler/permission_handler.dart';
  4. // import 'package:photo_manager/photo_manager.dart';
  5. // import 'package:shared/utils/device_utils.dart';
  6. // import 'package:shared/utils/log_utils.dart';
  7. // import 'package:widgets/dialog/app_default_dialog.dart';
  8. // import 'package:widgets/dialog/permission_desc_dialog.dart';
  9. //
  10. // import '../dialog/dialog_engine.dart';
  11. //
  12. //
  13. // /**
  14. // * 动态权限的申请与校验
  15. // */
  16. // class PermissionEngine {
  17. // // 私有构造函数
  18. // PermissionEngine._privateConstructor();
  19. //
  20. // // 单例实例
  21. // static final PermissionEngine _instance = PermissionEngine._privateConstructor();
  22. //
  23. // // 获取单例实例的访问点
  24. // factory PermissionEngine() {
  25. // return _instance;
  26. // }
  27. //
  28. // /// 申请多媒体相册权限
  29. // void requestPhotosPermission(void Function() success) async {
  30. // //相册的选项
  31. // if (DeviceUtils.isIOS) {
  32. // //申请授权
  33. // final value = await PhotoManager.requestPermissionExtend();
  34. // if (value.hasAccess) {
  35. // //已授权
  36. // Log.d("相册已授权");
  37. // success();
  38. // } else if (value == PermissionState.limited) {
  39. // Log.d("相册访问受限,去设置受限");
  40. // PhotoManager.presentLimited();
  41. // } else {
  42. // Log.d("相册无授权,去设置");
  43. // DialogEngine.show(
  44. // widget: AppDefaultDialog(
  45. // "无相册权限,前往设置",
  46. // confirmAction: () {
  47. // PhotoManager.openSetting();
  48. // },
  49. // ),
  50. // );
  51. // }
  52. // } else {
  53. // //Android是否有SD卡权限
  54. // var status = await Permission.storage.status;
  55. // late PermissionState ps;
  56. // if (status.isGranted) {
  57. // // 已经授权
  58. // success();
  59. // } else {
  60. // // 未授权,则准备发起一次申请
  61. // var permissionRequestFuture = PhotoManager.requestPermissionExtend();
  62. //
  63. // // 延迟500毫秒的Future
  64. // var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
  65. //
  66. // // 使用Future.any等待上述两个Future中的任何一个完成
  67. // var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
  68. //
  69. // // 判断响应结果
  70. // if (firstCompleted == 'delay') {
  71. // Log.d("判断响应结果:1");
  72. // // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
  73. // _showPermissionDialog("“YYBusiness”想访问你的多媒体相册 用于图片上传,图片保存等功能,请允许我获取您的权限");
  74. // // 再次等待权限请求结果
  75. // ps = await permissionRequestFuture;
  76. // DialogEngine.dismiss(tag: "permission");
  77. // } else {
  78. // Log.d("判断响应结果:2");
  79. // // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
  80. // DialogEngine.dismiss(tag: "permission");
  81. // ps = firstCompleted as PermissionState;
  82. // }
  83. //
  84. // if (ps.isAuth) {
  85. // // 用户授权
  86. // success();
  87. // } else {
  88. // // 权限被拒绝
  89. // await DialogEngine.show(
  90. // widget: AppDefaultDialog("请到您的手机设置打开相册的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
  91. // openAppSettings();
  92. // }),
  93. // );
  94. // }
  95. // }
  96. // }
  97. // }
  98. //
  99. // /// 申请相机权限
  100. // void requestCameraPermission(void Function() success) async {
  101. // // 获取当前的权限
  102. // var status = await Permission.camera.status;
  103. // if (status.isGranted) {
  104. // // 已经授权
  105. // success();
  106. // } else {
  107. // // 未授权,则准备发起一次申请
  108. // var permissionRequestFuture = Permission.camera.request();
  109. //
  110. // // 延迟500毫秒的Future
  111. // var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
  112. //
  113. // // 使用Future.any等待上述两个Future中的任何一个完成
  114. // var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
  115. //
  116. // // 判断响应结果
  117. // if (firstCompleted == 'delay') {
  118. // // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
  119. // _showPermissionDialog("“YYBusiness”申请调用您的相机权限 用于使用拍摄头像,图片上传保存等功能,请允许我获取您的权限");
  120. // // 再次等待权限请求结果
  121. // status = await permissionRequestFuture;
  122. // DialogEngine.dismiss(tag: "permission");
  123. // } else {
  124. // // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
  125. // DialogEngine.dismiss(tag: "permission");
  126. // status = firstCompleted as PermissionStatus;
  127. // }
  128. //
  129. // if (status.isGranted) {
  130. // // 用户授权
  131. // success();
  132. // } else {
  133. // // 权限被拒绝
  134. // await DialogEngine.show(
  135. // widget: AppDefaultDialog("请到您的手机设置打开相机的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
  136. // openAppSettings();
  137. // }),
  138. // );
  139. // }
  140. // }
  141. // }
  142. //
  143. // /// 校验并申请定位权限
  144. // Future<bool> requestLocationPermission() async {
  145. // // 获取当前的权限
  146. // var status = await Permission.location.status;
  147. // if (status.isGranted) {
  148. // // 已经授权
  149. // return true;
  150. // } else {
  151. // // 未授权,则准备发起一次申请
  152. // var permissionRequestFuture = Permission.location.request();
  153. //
  154. // // 延迟500毫秒的Future
  155. // var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
  156. //
  157. // // 使用Future.any等待上述两个Future中的任何一个完成
  158. // var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
  159. //
  160. // // 判断响应结果
  161. // if (firstCompleted == 'delay') {
  162. // // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
  163. // _showPermissionDialog("“YYBusiness”想访问您的定位权限获取您的位置来推荐附近的工作");
  164. // // 再次等待权限请求结果
  165. // status = await permissionRequestFuture;
  166. // DialogEngine.dismiss(tag: "permission");
  167. // } else {
  168. // Log.d("权限请求已完成,立刻取消对话框展示");
  169. // // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
  170. // DialogEngine.dismiss(tag: "permission");
  171. // status = firstCompleted as PermissionStatus;
  172. // }
  173. //
  174. // if (status.isGranted) {
  175. // // 用户授权
  176. // return true;
  177. // } else {
  178. // // 权限被拒绝
  179. // await DialogEngine.show(
  180. // widget: AppDefaultDialog("请到您的手机设置打开定位的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
  181. // openAppSettings();
  182. // }),
  183. // );
  184. // return false;
  185. // }
  186. // }
  187. // }
  188. //
  189. // //顶部展示权限声明详情弹窗
  190. // void _showPermissionDialog(String desc) {
  191. // DialogEngine.show(
  192. // clickMaskDismiss: false,
  193. // backDismiss: true,
  194. // tag: "permission",
  195. // maskColor: Colors.transparent,
  196. // widget: PermissionDescDialog(desc),
  197. // );
  198. // }
  199. // }