permission_manager
์ฉ๋
๊ตฌํ
flutter pub add permission_handlerimport 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:fitsquad_app/barrel.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
class PermissionManager {
static Future<void> checkPhotoPermission({
required BuildContext currentBuildContext,
required Function grantedAction,
}) async {
PermissionStatus status = await _checkStatus();
if (status.isDenied) {
status = await _requestPermission();
if (status.isGranted) {
grantedAction();
} else if (status.isPermanentlyDenied) {
Future.microtask(() {
BasicDialog.show(
context: currentBuildContext,
title: TextManager.photoPermissionTitle.tr(),
contents: TextManager.photoPermissionMessage.tr(),
confirmAction: () {
openAppSettings();
},
);
});
}
} else if (status.isPermanentlyDenied) {
Future.microtask(() {
BasicDialog.show(
context: currentBuildContext,
title: TextManager.photoPermissionTitle.tr(),
contents: TextManager.photoPermissionMessage.tr(),
confirmAction: () {
openAppSettings();
},
);
});
} else if (status.isGranted) {
grantedAction();
}
}
static Future<PermissionStatus> _checkStatus() async {
if (Platform.isAndroid) {
final androidInfo = await DeviceInfoPlugin().androidInfo;
if (androidInfo.version.sdkInt <= 32) {
return await Permission.storage.status;
} else {
return await Permission.photos.status;
}
}
return await Permission.photos.status;
}
static Future<PermissionStatus> _requestPermission() async {
if (Platform.isAndroid) {
final androidInfo = await DeviceInfoPlugin().androidInfo;
if (androidInfo.version.sdkInt <= 32) {
return await Permission.storage.request();
} else {
return await Permission.photos.request();
}
}
return await Permission.photos.request();
}
static Future<void> checkCameraPermission({
required BuildContext currentBuildContext,
required Function grantedAction,
}) async {
PermissionStatus status = await Permission.camera.status;
if (status.isDenied) {
status = await Permission.camera.request();
if (status.isGranted) {
grantedAction();
} else if (status.isPermanentlyDenied) {
Future.microtask(() {
BasicDialog.show(
context: currentBuildContext,
title: TextManager.cameraPermissionTitle.tr(),
contents: TextManager.cameraPermissionMessage.tr(),
confirmAction: () {
openAppSettings();
},
);
});
}
} else if (status.isPermanentlyDenied) {
Future.microtask(() {
BasicDialog.show(
context: currentBuildContext,
title: TextManager.cameraPermissionTitle.tr(),
contents: TextManager.cameraPermissionMessage.tr(),
confirmAction: () {
openAppSettings();
},
);
});
} else if (status.isGranted) {
grantedAction();
}
}
}
์ฌ์ฉ
์ฃผ์์ฌํญ
Last updated