gpt4 book ai didi

flutter - CustomPainter - shouldRepaint 值得吗?

转载 作者:IT王子 更新时间:2023-10-29 06:55:18 35 4
gpt4 key购买 nike

我实现了一个 CustomPainter。在 shouldRepaint 方法中,我必须比较 6 组深度相等性。我现在正在使用 setsEqual 来做这件事。如果它们非常相等,则无需重新绘制,但真的值得检查一下吗?即使我不必这样做,只返回 true 并绘画会不会更糟?

编辑:我忘了说这幅画本身其实很简单。这些集合包含计算点(每个点大约 5 个)的对象,然后我将这些点绘制为圆圈。圆圈的颜色取决于它所属的集合。由于与用户的交互,对象可能会改变它们所属的集合,如果发生这种情况,持有 CustomPaint 的 StatefulWidget 将使用 setState 进行重建。我认为复杂的部分是决定是否重绘:每个集合都必须与旧的代表集合进行比较,如果一个集合的内容发生变化,我的 CustomPainter 应该重绘。

最佳答案

CustomPaint 会消耗很多的电量。来自另一个问题的例子 here由于持续绘图,用户的 FPS 大幅下降。

所以这是可以被认为是值得的东西。

但最重要的是要注意:shouldRepaint 不是自给自足的。根据文档:

It's possible that the paint method will get called even if shouldRepaint returns false (e.g. if an ancestor or descendant needed to be repainted). It's also possible that the paint method will get called without shouldRepaint being called at all (e.g. if the box changes size).

一种解决方案是使用 RepaintBoundary,如文档或上面链接的 SO 问题中所述。

关于flutter - CustomPainter - shouldRepaint 值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043748/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com