Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions ios/Classes/SwiftSimplePermissionsPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@ import UIKit
import AVFoundation
import CoreLocation

extension AVAuthorizationStatus : CustomStringConvertible {

public var description: String {
switch self {
case .notDetermined: return "notDetermined"
case .restricted: return "restricted"
case .denied: return "denied"
case .authorized: return "authorized"
}
}
}

public class SwiftSimplePermissionsPlugin: NSObject, FlutterPlugin, CLLocationManagerDelegate {
var whenInUse = false;
var result: FlutterResult? = nil;
Expand All @@ -19,6 +31,9 @@ public class SwiftSimplePermissionsPlugin: NSObject, FlutterPlugin, CLLocationMa
let method = call.method;
let dic = call.arguments as? [String: Any];
switch(method) {
case "checkCameraPermission":
let authStatus = AVCaptureDevice.authorizationStatus(for: AVMediaType.video)
result(authStatus.description)
case "checkPermission":
let permission = dic!["permission"] as! String;
checkPermission(permission, result: result);
Expand Down
21 changes: 21 additions & 0 deletions lib/simple_permissions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@ import 'dart:async';

import 'package:flutter/services.dart';

enum CameraAuthorizationStatus {
notDetermined,
restricted,
denied,
authorized
}

CameraAuthorizationStatus authorizationStatus(String status) {
switch (status) {
case "notDetermined": return CameraAuthorizationStatus.notDetermined;
case "restricted": return CameraAuthorizationStatus.restricted;
case "denied": return CameraAuthorizationStatus.denied;
case "authorized": return CameraAuthorizationStatus.authorized;
}
}

class SimplePermissions {
static const MethodChannel _channel =
const MethodChannel('simple_permissions');
Expand All @@ -25,6 +41,11 @@ class SimplePermissions {
static Future<bool> openSettings() {
return _channel.invokeMethod("openSettings");
}

static Future<CameraAuthorizationStatus> checkCameraPermission() async {
String authStatus = await _channel.invokeMethod("checkCameraPermission");
return Future.value(authorizationStatus(authStatus));
}
}

/// Enum of all available [Permission]
Expand Down