【发布时间】:2020-10-06 06:46:41
【问题描述】:
我一直在尝试开发一个绘图应用程序,但所有示例代码(包括 The Boring Flutter Development Show 中的示例代码)都不能很好地转化为实际使用。
主要问题是CustomPaint 的绘制操作过于昂贵,并且每一个点、每一帧都重新绘制。随着点数的增加,颤振应用每帧的渲染时间显着增加
从我花时间寻找解决这个问题的方法开始,我发现了这些
RepaintBoundary:栅格化图层使用
SingleChildRenderObjectWidget和RenderProxyBox的自定义小部件:必须实现paint 方法并且无法传递控制器
我认为上述任何解决方案都不能很好地满足我的需求:无需重新绘制即可顺利进行画布绘制操作。我什至尝试简化要点,但由于CustomPaint 的固有机制,这也不起作用
如果有办法将画布作为小部件传递并附加控制器,则可以轻松存储捕获的点并更有效地使用基本的画布操作,如 canvas.drawPath() 或 canvas.drawLine()
任何建议都会有所帮助。谢谢!
【问题讨论】:
-
PictureRecorder也许? -
@pskink 从我见过的所有示例中,我找不到任何将 PictureRecorder 或 Canvas 作为小部件传递的示例,您可以在其中呈现实时触摸事件。如果我最近开始学习 Flutter,如果我听起来很幼稚,我深表歉意。
-
@Dhruva 你找到解决办法了吗?
-
@Alex 我会发布答案
标签: flutter dart rxdart flutter-canvas