Обработка нулевого файла из 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;
}
Пожалуйста, предложите мне лучший способ сделать то, что я пытаюсь сделать.
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. Таким образом, приведенный выше код должен работать нормально.