42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import 'package:flutter/services.dart';
|
|
|
|
import 'app_exception.dart';
|
|
|
|
/// The user denied a system permission the action needs (camera, photos).
|
|
/// Retrying won't help until the permission is granted in the system settings.
|
|
class PermissionException extends AppException {
|
|
const PermissionException({
|
|
required super.userMessage,
|
|
super.technicalDetails,
|
|
}) : super(allowRetry: false);
|
|
|
|
factory PermissionException.camera({String? technicalDetails}) =>
|
|
PermissionException(
|
|
userMessage:
|
|
'Kein Zugriff auf die Kamera. Bitte erlaube der App den '
|
|
'Kamerazugriff in den Einstellungen deines Geräts.',
|
|
technicalDetails: technicalDetails,
|
|
);
|
|
|
|
factory PermissionException.photos({String? technicalDetails}) =>
|
|
PermissionException(
|
|
userMessage:
|
|
'Kein Zugriff auf deine Fotos. Bitte erlaube der App den '
|
|
'Fotozugriff in den Einstellungen deines Geräts.',
|
|
technicalDetails: technicalDetails,
|
|
);
|
|
|
|
/// Maps the `*_access_denied` codes thrown by `image_picker`; `null` for any
|
|
/// other platform error.
|
|
static PermissionException? fromPlatform(PlatformException error) =>
|
|
switch (error.code) {
|
|
'camera_access_denied' => PermissionException.camera(
|
|
technicalDetails: error.message,
|
|
),
|
|
'photo_access_denied' => PermissionException.photos(
|
|
technicalDetails: error.message,
|
|
),
|
|
_ => null,
|
|
};
|
|
}
|