Использование Flutter Share для обмена локально полученным изображением - PullRequest
0 голосов
/ 18 марта 2020

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

Share.share(imagePath);

Может кто-нибудь сказать, пожалуйста, как это сделать? Я думаю, вам нужно как-то преобразовать биты. Спасибо!

Вот еще код для справки:

class DisplayPictureScreen extends StatelessWidget {
  final String imagePath;

  Future<ByteData> getBytesFromFile() async {
  Uint8List bytes = File(imagePath).readAsBytesSync() as Uint8List;
  return ByteData.view(bytes.buffer);
}

  const DisplayPictureScreen({Key key, this.imagePath}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Display the Picture')),
      // The image is stored as a file on the device. Use the `Image.file`
      // constructor with the given path to display the image.
      body: Image.file(File(imagePath)),
      floatingActionButton: FloatingActionButton(
        onPressed: () {

            print("in print");
            Share.share(imagePath);


            /*
          getBytesFromFile().then((bytes) {
    Share.file('Share via:', imagePath,
        bytes.buffer.asUint8List(), 'image/png');
  });
        */}
      )
    );
  }
}

1 Ответ

0 голосов
/ 19 марта 2020

Вы можете использовать пакет https://pub.dev/packages/esys_flutter_share
В вашем коде у вас уже есть bytes.buffer.asUint8List(), поэтому вы можете напрямую использовать его

await Share.file('esys image', 'esys.jpg', bytes.buffer.asUint8List(), 'image/jpg', text: 'My optional text.');
...