Обработка нулевого файла из image_picker во флаттере image_cropper?

Я пытаюсь получить изображение с помощью пакета image_picker, а затем перехожу к image_cropper. Я применил немного другой подход, чтобы не возвращаться к главному экрану после выбора изображения, прежде чем перейти к кадрированию экрана изображения.

Вот мой код для выбора изображения и обрезки изображения.

Future<File> getImageFromGallery(BuildContext context) async{
    final File croppedImage = await ImageCropper.cropImage(
        sourcePath: File((await ImagePicker().getImage(source: ImageSource.gallery)).path).path,
        maxWidth: 1080,
        maxHeight: 1080,
        aspectRatio: CropAspectRatio(ratioX: 1.0, ratioY: 1.0)
    );

    if (croppedImage  != null) {

      return croppedImage;
    }
    return null;
}
Error: The getter 'path' was called on null.

В пробовал Null Safety, но потом выдает эту ошибку:

Failed assertion: line 81 pos 12: 'await File(sourcePath).exists()': is not true.

Мой код с нулевой безопасностью.

Future<File> getImageFromGallery(BuildContext context) async{

    final File croppedImage = await ImageCropper.cropImage(
        sourcePath: File((await ImagePicker().getImage(source: ImageSource.gallery)).path).path,
        maxWidth: 1080,
        maxHeight: 1080,
        aspectRatio: CropAspectRatio(ratioX: 1.0, ratioY: 1.0)
    );

    if (croppedImage  != null) {

      return croppedImage;
    }
    return null;
}

Пожалуйста, предложите мне лучший способ сделать то, что я пытаюсь сделать.


person ASAD HAMEED    schedule 04.08.2020    source источник


Ответы (1)


var img = await ImagePicker().getImage(source: ImageSource.gallery);
final File croppedImage = await ImageCropper.cropImage(
    sourcePath: img.path,
    maxWidth: 1080,
    maxHeight: 1080,
    aspectRatio: CropAspectRatio(ratioX: 1.0, ratioY: 1.0)
);

Я думаю, вам следует сначала забрать img, проверить, действительно ли он img или нет. А затем передайте путь к imageCropper. Таким образом, приведенный выше код должен работать нормально.

person towhid    schedule 04.08.2020
comment
Я пробовал это, и он отлично работает с галереей, но для камеры есть задержка при захвате изображения и выводе пользователя на экран кадрирования изображения. Вот почему я выбираю другой путь. Было бы здорово, если бы вы смогли заставить это работать. - person ASAD HAMEED; 04.08.2020