Flutter 颤振Web-从自定义绘制保存Image.png

Flutter 颤振Web-从自定义绘制保存Image.png,flutter,flutter-web,Flutter,Flutter Web,我正在将一个移动应用程序移植到Web,这个应用程序使用CustomPaint小部件根据用户输入进行绘制。使用repainboundary我拍摄了绘画的屏幕截图,并使用save_in_gallery.dart软件包将其保存在设备上 在Web应用程序中,绘图部分工作正常,但我无法获得屏幕截图的部分或保存图像的部分。这是我用来保存的代码 RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObj

我正在将一个移动应用程序移植到Web,这个应用程序使用
CustomPaint
小部件根据用户输入进行绘制。使用
repainboundary
我拍摄了绘画的屏幕截图,并使用
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包在FlatterWeb上不起作用,但我没有找到任何替代方案。所以我的问题是:有一种方法可以拍摄自定义绘画的图像,并将其保存为Flatter Web上的Png文件?

将以下行添加到Web/index.html文件中

然后将您的
pngBytes
传递给如下方法:

将'dart:html'导入为html//忽略:避免网络库的混乱
将“dart:js”导入为js;//忽略:避免网络库的混乱
类文件保存器{
void saveAs(列表字节、字符串文件名)
=>js.context.callMethod(“saveAs”,[html.Blob([bytes]),fileName]);
}