appImagePick method

dynamic appImagePick({
  1. ImageSource source = ImageSource.gallery,
  2. required BuildContext context,
})

Implementation

appImagePick(
    {ImageSource source = ImageSource.gallery,
    required BuildContext context}) async {
  final isPermissionGranted = source == ImageSource.camera
      ? await Permission.camera.isGranted
      : (await Permission.photos.isGranted ||
          await Permission.photos.isLimited);

  debugPrint(isPermissionGranted.toString());

  Permission.photos.status
      .then((value) => debugPrint(' photos permission ${value.toString()}'));
  Permission.camera.status
      .then((value) => debugPrint(' camera permission ${value.toString()}'));

  if (Platform.isAndroid) {
    if (!isPermissionGranted) {
      if (source == ImageSource.camera) {
        await Permission.camera.request();
        if (await Permission.camera.isPermanentlyDenied ||
            await Permission.camera.isDenied) {
          showPermissionDialog('camera', context);
        }
      } else if (source == ImageSource.gallery) {
        await Permission.photos.request();

        if (await Permission.photos.isPermanentlyDenied ||
            await Permission.photos.isDenied) {
          showPermissionDialog('photos', context);
        }
      }
    }
  } else if (Platform.isIOS) {
    if (source == ImageSource.camera) {
      await Permission.camera.request();
      if (await Permission.camera.isPermanentlyDenied ||
          await Permission.camera.isDenied ||
          await Permission.camera.isRestricted) {
        showPermissionDialog('camera', context);
      }
    } else if (source == ImageSource.gallery) {
      await Permission.photos.request();

      if (await Permission.photos.isPermanentlyDenied ||
          await Permission.photos.isDenied ||
          await Permission.photos.isRestricted) {
        showPermissionDialog('photos', context);
      }
    }
  }

  if (isPermissionGranted) {
    final pickedFile = await _picker.pickImage(source: source);
    if (pickedFile != null) {
      file = File(pickedFile.path);
    }
    Navigator.of(context).pop();
  }

  return file;
}