diff --git a/example/pubspec.lock b/example/pubspec.lock index 2c6f27e..2593a7f 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -1025,6 +1025,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + permission_handler: + dependency: transitive + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: diff --git a/lib/fa_flutter_core.dart b/lib/fa_flutter_core.dart index 605763c..71d2b2d 100644 --- a/lib/fa_flutter_core.dart +++ b/lib/fa_flutter_core.dart @@ -42,17 +42,18 @@ export 'package:uuid/uuid.dart'; export 'package:webview_flutter/webview_flutter.dart'; export 'src/device_info/device_info.dart'; +export 'src/extension/num_extension.dart'; +export 'src/extension/string_extension.dart'; export 'src/fa_firebase_analytics/fa_firebase_analytics.dart'; export 'src/fa_flutter_sembast/fa_flutter_sembast.dart'; export 'src/in_app_update/in_app_updator.dart'; export 'src/package_info/package_info.dart'; +export 'src/permission_service/permission_service.dart'; export 'src/pp_tc/fa_policy_tc.dart'; export 'src/prefs/fa_flutter_prefs.dart'; export 'src/result/result.dart'; export 'src/system_info/system_info.dart'; export 'src/utils/expression_utils.dart'; -export 'src/utils/platform_utils.dart'; export 'src/utils/image_utils.dart'; +export 'src/utils/platform_utils.dart'; export 'src/void_result/void_result.dart'; -export 'src/extension/string_extension.dart'; -export 'src/extension/num_extension.dart'; diff --git a/lib/src/extension/num_extension.dart b/lib/src/extension/num_extension.dart index c625d27..d3a4161 100644 --- a/lib/src/extension/num_extension.dart +++ b/lib/src/extension/num_extension.dart @@ -1,8 +1,6 @@ - - extension NumExtension on num { /// Returns 0 if the number is negative, otherwise returns the original value num nonNegative() { return this < 0 ? 0 : this; } -} \ No newline at end of file +} diff --git a/lib/src/permission_service/permission_service.dart b/lib/src/permission_service/permission_service.dart new file mode 100644 index 0000000..43ea962 --- /dev/null +++ b/lib/src/permission_service/permission_service.dart @@ -0,0 +1,16 @@ +import 'package:permission_handler/permission_handler.dart'; + +class PermissionService { + Future request(Permission appPermission) async { + var status = await appPermission.status; + if (status.isGranted) return true; + if (status.isDenied) { + status = await appPermission.request(); + return status.isGranted; + } + if (status.isPermanentlyDenied) { + await openAppSettings(); + } + return false; + } +} diff --git a/pubspec.lock b/pubspec.lock index 6551a36..c6f245f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1202,6 +1202,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 8767fb3..23b6eb4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -68,6 +68,7 @@ dependencies: uuid: ^4.5.1 provider: ^6.1.5 flutter_image_compress: ^2.4.0 + permission_handler: ^12.0.0+1 dev_dependencies: flutter_test: