// ignore_for_file: constant_identifier_names import 'dart:async'; import 'package:flutter/services.dart'; import 'package:logging/logging.dart'; import 'package:np_platform_permission/src/k.dart' as k; class Permission { static const READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE"; static const WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE"; static Future request(List permissions) => _methodChannel.invokeMethod("request", { "permissions": permissions, }); static Future hasWriteExternalStorage() async { return (await _methodChannel .invokeMethod("hasWriteExternalStorage"))!; } static Future hasReadExternalStorage() async { return (await _methodChannel.invokeMethod("hasReadExternalStorage"))!; } static Stream get stream => _eventStream; static final _eventStream = _eventChannel.receiveBroadcastStream().map((event) { if (event is Map) { switch (event["event"]) { case _eventRequestPermissionsResult: return PermissionRequestResult( (event["grantResults"] as Map).cast()); default: _log.shout("[_eventStream] Unknown event: ${event["event"]}"); } } else { return event; } }); static const _eventChannel = EventChannel("${k.libId}/permission"); static const _methodChannel = MethodChannel("${k.libId}/permission_method"); static const _eventRequestPermissionsResult = "RequestPermissionsResult"; static final _log = Logger("plugin.permission.Permission"); } class PermissionRequestResult { static const granted = 0; static const denied = -1; const PermissionRequestResult(this.grantResults); final Map grantResults; }