Flutter Web - 从自定义画图保存图像 .png

标签 flutter flutter-web

我正在将移动应用程序移植到 Web,此应用程序使用 CustomPaint根据用户输入绘制的小部件。与 RepaintBoundary我截取了油漆的屏幕截图并使用 save_in_gallery.dart 将其保存在设备上包裹。

在 Web 应用程序上,绘图部分工作正常,但我无法获取屏幕截图部分或保存图像的部分工作。这是我用来保存的代码

    RenderRepaintBoundary boundary =
        globalKey.currentContext.findRenderObject();
    ui.Image image = await boundary.toImage();
    ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();
    final res = await _imageSaver.saveImage(
      imageBytes: pngBytes,
      directoryName: "dir_name",
    );
    print(res);
    print(pngBytes);
  } 

据我了解,dart:ui 包在 Flutter Web 上不起作用,但我没有找到任何替代方案。所以我的问题是:有没有办法在 Flutter Web 上拍摄自定义画图的图像并将其保存为 Png 文件?

最佳答案

将以下行添加到 web/index.html 文件<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.21.15/plugins/export/libs/FileSaver.js/FileSaver.min.js"></script> 然后通过您的 pngBytes到这样的方法:

import 'dart:html' as html; //ignore: avoid_web_libraries_in_flutter
import 'dart:js' as js; // ignore: avoid_web_libraries_in_flutter

class FileSaver {
  void saveAs(List<int> bytes, String fileName)
    => js.context.callMethod("saveAs", [html.Blob([bytes]), fileName]);
}

关于Flutter Web - 从自定义画图保存图像 .png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62002501/

相关文章:

Flutter网页上传文件

用于具有多个 Material 应用程序的 Web 路由的 Flutter

Flutter Material Icons 在 web 上呈现随机图标

flutter - 只处理特定区域的鼠标事件

flutter - 有什么方法可以在 Flutter for Web 中添加谷歌地图?

flutter - 当我关注另一个 textField 时验证 textField

android - 在屏幕点击时显示(滑入)或隐藏(滑出)flutter AppBar

android - 使用谷歌分析 Flutter 日志事件

http - 如何从http POST请求结果列表中显示listview构建器上的数据

firebase - 在 nullsafety 之后将 firestore 与 json_serializable 一起使用