我做了一个海关油漆工。在ShouldRepaint方法中,我必须比较6组深度相等。我现在用setseequal来做这个。
如果它们是完全相等的,就不需要重新喷漆,但是否真的值得努力检查?
即使我不必这么做,仅仅返回真实和绘画会更糟糕吗?
编辑:
我忘了提一下,这幅画其实很简单。
这些集合包含计算点的对象(每个点大约5个),然后我画成圆。
圆的颜色取决于它所属的集合。由于与用户的交互,对象可能会更改它们所属的集合,
如果发生这种情况,保存custompaint的statefulwidget将使用setstate重新生成。
我认为复杂的部分是决定是否重新喷漆:每一组都必须与旧的代表组进行比较,如果一组的内容发生变化,我的客户油漆工应该重新喷漆。
最佳答案
定制油漆会消耗很多电力。另一个问题here中的例子是,由于不断的绘制,用户的fps下降很大。
所以这是值得考虑的。
但最重要的是:shouldRepaint
不能自给自足。
根据文件:
即使shouldrepaint返回false(例如,如果需要重新绘制祖先或后代),也可能会调用paint方法。也可能调用paint方法时根本不调用shouldrepaint(例如,如果框改变大小)。
解决方法是使用文档中解释的RepaintBoundary
或上面链接的so问题。
关于flutter - CustomPainter - 应该值得努力吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50043748/