Как сохранить изображение в галерее во флаттере? - PullRequest
0 голосов
/ 15 января 2020

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

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

и все сохранено, и файл существует в каталоге документов.

Проблема возникает, когда я пытаюсь сохранить изображение в галерее с помощью плагина image_gallery_saver, и это дает мне следующее исключение:

I/flutter ( 2726): /data/user/0/com.example.cropy/app_flutter/image1.png
I/flutter ( 2726): File: '/data/user/0/com.example.cropy/app_flutter/image1.png'
W/System.err( 2726): java.io.FileNotFoundException: /storage/emulated/0/Cropy/1579080598267.png: open failed: ENOENT (No such file or directory)
W/System.err( 2726):    at libcore.io.IoBridge.open(IoBridge.java:496)
W/System.err( 2726):    at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
W/System.err( 2726):    at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
W/System.err( 2726):    at kotlin.io.FilesKt__UtilsKt.copyTo(Utils.kt:205)
W/System.err( 2726):    at kotlin.io.FilesKt__UtilsKt.copyTo$default(Utils.kt:181)
W/System.err( 2726):    at com.example.imagegallerysaver.ImageGallerySaverPlugin.saveFileToGallery(ImageGallerySaverPlugin.kt:79)
W/System.err( 2726):    at com.example.imagegallerysaver.ImageGallerySaverPlugin.onMethodCall(ImageGallerySaverPlugin.kt:37)
W/System.err( 2726):    at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:222)
W/System.err( 2726):    at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:96)
W/System.err( 2726):    at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:656)
W/System.err( 2726):    at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err( 2726):    at android.os.MessageQueue.next(MessageQueue.java:336)
W/System.err( 2726):    at android.os.Looper.loop(Looper.java:174)
W/System.err( 2726):    at android.app.ActivityThread.main(ActivityThread.java:7356)
W/System.err( 2726):    at java.lang.reflect.Method.invoke(Native Method)
W/System.err( 2726):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
W/System.err( 2726):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
W/System.err( 2726): Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
W/System.err( 2726):    at libcore.io.Linux.open(Native Method)
W/System.err( 2726):    at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
W/System.err( 2726):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
W/System.err( 2726):    at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
W/System.err( 2726):    at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7255)
W/System.err( 2726):    at libcore.io.IoBridge.open(IoBridge.java:482)
W/System.err( 2726):    ... 16 more

Метод сохранения изображения:

Future saveImage(BuildContext context) async {
    await ImageGallerySaver.saveFile(fileImage.path);
    Scaffold.of(context).showSnackBar(
      SnackBar(
        backgroundColor: Colors.white,
        content: Text(
          'Image saved successfully!',
          style: TextStyle(
            color: Colors.cyan,
          ),
        ),
        action: SnackBarAction(
          label: 'OK',
          onPressed: () {
            Scaffold.of(context).hideCurrentSnackBar();
          },
        ),
      ),
    );
  }

ОБНОВЛЕНО

  • fileImage.path = / data / user /0/com.example.cropy/app_flutter/image1.png

1 Ответ

0 голосов
/ 15 января 2020

Мое решение состояло в том, чтобы использовать пакет сохранения галереи и перенести мой проект на AndroidX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...