微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 如何通过分享插件分享文件图片

如何解决Flutter 如何通过分享插件分享文件图片

Hello and thank you in advance!

我正在编辑图片。我可以从图像选择器中选择图像并在 drawstringdrawstring 的帮助下重写它。我可以将图像保存在我的文档目录中。我想通过 Share 插件从 documentDirectory 路径共享我的图像。但是,我收到了一个错误

代码错误详情如下所示。

代码

  FlatButton(
  child: Text("Apply Watermark Over Image"),onpressed: () async {
    final image1 = ui.decodeImage(_originalImage.readAsBytesSync());

    ui.drawString(image1,ui.arial_24,300,400,'Hello And thank you');


    final documentDirectory = await getApplicationDocumentsDirectory();

    final file = new File(p.join(documentDirectory.path,"merged_image.jpg"));
   
    file.writeAsBytesSync(ui.encodeJpg(image1));
      // I HAVE THE IMAGE IN - documentDirectory.path "HERE I CANT SHARE THAT IMAGE" 
    final ByteData bytes = await rootBundle.load(documentDirectory.path);
    await Share.file('esys image','esys.png',bytes.buffer.asUint8List(),'image/png',text: 'My optional text.');
  },)

我收到此错误

[ERROR:Flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:无法加载资产:/data/user/0/com.photogranth.watermark/app_Flutter

解决方法

对于共享文件图像,您可以使用此 flutter_share_file

  FlatButton(
  onPressed: () async {
                Directory dir = await getApplicationDocumentsDirectory();
                File testFile = new File("${dir.path}/image.png");
                FlutterShareFile.shareImage(dir.path,"image.png",ShareFileType.image);
              },)
,

我们可以使用share package进行文件共享,此插件支持共享图片、文字和主题

这是完整的例子

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:share/share.dart';

List<String> imagePaths = [];

  _AddFile(int position) {
      final imagePicker = ImagePicker();
      final pickedFile = await imagePicker.getImage(
        source: ImageSource.gallery,);
      if (pickedFile != null) {
        setState(() {
          imagePaths.add(pickedFile.path);
        });
      }
    },_onShare(BuildContext context) async {
    final RenderBox box = context.findRenderObject() as RenderBox;

    if (imagePaths.isNotEmpty) {
      await Share.shareFiles(imagePaths,text: text,subject: subject,sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size);
    } else {
      await Share.share(text,sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size);
    }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。