【发布时间】:2019-08-03 16:25:57
【问题描述】:
我正在尝试从 Widget 导出图像而不将此 Widget 添加到屏幕。
这甚至可能吗?
我已经通过添加到可滚动容器成功导出它,现在我想渲染它而不将其添加到屏幕并将其保存到临时文件以进行共享。
我认为那里应该有一个“油漆”电话,但无法弄清楚确切的位置。
这是我的代码:
var shareImage = await ShareImageWidget.builder(context,
item: item, definition: definition);
var widget = shareImage.build(context);
var repaint = RepaintBoundary.wrap(widget, 0);
var render = RenderRepaintBoundary(child:repaint.createRenderObject(context));
ui.Image image = await render.toImage(pixelRatio: 1.0);
ByteData byteData = await image.toByteData(format:ui.ImageByteFormat.png);
var pngBytes = byteData.buffer.asUint8List();
var bs64 = base64Encode(pngBytes);
var dir = await getTemporaryDirectory();
【问题讨论】:
-
不幸的是,当您使用它时,它会引发与不透明度为 0 的小部件相同的错误。" flutter: 'package:flutter/src/rendering/proxy_box.dart': 断言失败:行2882 pos 12: '!debugNeedsPaint': 不正确。"
-
@GünterZöchbauer
-
你有没有找到一个解决方案来绘制一个小部件而不显示它?
-
嘿卢卡,我没有。最后用另一个小部件覆盖了这个小部件。