Flutter: невозможно отобразить изображение в предварительном просмотре, когда изображение передается WhatsApp и Facebook - PullRequest
0 голосов
/ 10 декабря 2018

Изображение может отображаться в чате Facebook Messenger, однако изображение не может быть отображено в WhatsApp, а также в качестве предварительного просмотра для приложения Messenger и WhatsApp.Любая идея, где я сделал неправильно?

Main.dart - Здесь я делаю снимок и сохраняю его во временный каталог.

  RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
  var image = await boundary.toImage(pixelRatio: 3.0);
  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.amanda.share/share');
  channel.invokeMethod('shareFile', 'image.png'); 

MainActivity.java

private void shareFile(String path) {

try{
     File imageFile = new File(this.getCacheDir(), path);
     Uri contentUri = FileProvider.getUriForFile(this, "me.amanda.share", 
     imageFile);
     Intent shareIntent = new Intent(Intent.ACTION_SEND);
     shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     shareIntent.setData(contentUri);
     shareIntent.setType("image/png");

     shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
     this.startActivity(Intent.createChooser(shareIntent, "Share image 
     using"));
     }
     catch (Exception ex){
        //android.widget.Toast.makeText(this, ex.getMessage(), 
        Toast.LENGTH_SHORT).show();
     }
  }

file_path.xml

    <?xml version="1.0" encoding="utf-8"?>
    <paths>
    <cache-path name="image" path="."/>
    </paths>

1 Ответ

0 голосов
/ 10 декабря 2018

Извините, ребята, это очень глупая ошибка.Изображение представляет собой QR-код, где фон QR-кода прозрачен.Следовательно, я должен обернуть изображение qr в виджет Container () и установить контейнер на белый, где RepaintBoundary может захватить весь контейнер с QR-кодом.Я не очень хорошо заметил, что изображение предварительного просмотра и мессенджер темные.

Это пример.

    hasValue ? Container(
    height: 230.0,
    color: Colors.white,
    margin: EdgeInsets.all(10.0),
    child: Center(
      child: RepaintBoundary(
        key: globalKey,
        child: Container(
          color: Colors.white,
          child: QrImage(
            data: !isScan ? _dataBarcodeString : trimBarcodeValue,
            size: 200.0,
          ),
        )
      ),
    ),
...