【问题标题】:Taking a screenshot of a specific Widget in Flutter?在 Flutter 中截取特定 Widget 的屏幕截图?
【发布时间】:2018-04-25 23:31:57
【问题描述】:

我有一个带有图像和一些信息的小部件,我希望用户能够将其保存并共享为图像。

有没有人知道如何在不具体告诉用户实际截取屏幕截图的情况下完成此操作?

【问题讨论】:

  • 这取决于您如何将图像放入小部件。如果它来自资产,或者您可以下载它,您可以在这里使用解决方案stackoverflow.com/questions/44181343/… 如果您使用 CustomPaint 自己绘制图像,似乎没有办法提取必要的位图。
  • 提示:您可以使用 Canvas 并将您希望在屏幕截图中添加的任何内容添加到其中。最终画布不过是一张图片,然后将图片保存在文件存储中。

标签: screenshot flutter


【解决方案1】:

我想这可能是您正在寻找的:https://docs.flutter.io/flutter/rendering/RenderRepaintBoundary/toImage.html

基本上,您将小部件包装在 RepaintBoundary 中。为RepaintBoundary 提供一个密钥,我们可以称之为boundaryKey。 然后你可以这样做:

RenderRepaintBoundary boundary = boundaryKey.currentContext.findRenderObject();

然后执行 ui.Image image = await boundary.toImage(); 创建一个图像,然后您可以使用该图像创建一个 png 或任何您想要的。

【讨论】:

  • 很好的解决方案!我想知道是否可以仅捕获小部件的一部分?因为只有小部件的一部分是我需要的。
  • 也许您可以定义一个不可见的子小部件,跨越您感兴趣的区域并将重绘边界包裹在其周围?
猜你喜欢
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多