Не удается обмениваться файлами с помощью канала Flutter - исключение отсутствует плагин - PullRequest
0 голосов
/ 11 марта 2020

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

Future<Null> _captureAndSharePng() async {
    try {
      RenderRepaintBoundary boundary =
          globalKey.currentContext.findRenderObject();
      var image = await boundary.toImage();
      ByteData byteData = await image.toByteData(format: ImageByteFormat.png);
      Uint8List pngBytes = byteData.buffer.asUint8List();

      final tempDir = await getTemporaryDirectory();
      final file = await new File('${tempDir.path}/image.png').create();
      await file.writeAsBytes(pngBytes);

      /*final channel = const MethodChannel('channel:me.alfian.share/share');

        assert(image != null);
        return channel.invokeMethod('shareImage', image);*/
      final channel = const MethodChannel('channel:me.alfian.share/share');
      channel.invokeMethod('shareFile', 'image.png');


    } catch (e) {
      print(e.toString());
    }
  }

Когда я пытаюсь поделиться сгенерированным изображением, используя вышеуказанную функцию, возникает исключение,

Exception message

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

1 Ответ

1 голос
/ 11 марта 2020

Я сделал нечто подобное и обнаружил, что Плагин esys_flutter_share: предлагает лучший метод для вызова кросс-формального обмена.

Попробуйте этот фрагмент кода, это работает для меня:

await Share.file(
    'Export', 'export.png', file.readAsBytesSync(), 'export/png');
...