问题标签 [flutter-custompainter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - CustomPainter.shouldRepaint() 在 Flutter 中是如何工作的?
在 Flutter 中,在创建CustomPainter时,有一个覆盖方法 shouldRepaint() ,您可以返回 true 或 false ......大概是为了告诉系统是否重新绘制视图。
在docs中,该方法的描述是:
shouldRepaint(covariant CustomPainter oldDelegate) → bool 每当向 RenderCustomPaint 对象提供自定义画家委托类的新实例时调用,或者在使用自定义画家委托类的新实例创建新的 CustomPaint 对象时调用(相当于同样的事情,因为后者是根据前者来实现的)。[...]
除了它返回一个布尔值之外,我基本上不理解任何其他内容。这让我很头疼!我还怀疑深入研究“自定义画家委托类”或“RenderCustomPaint 对象”的定义不会是一种启发性的体验。
我很困惑,因为:
我认为我们不必担心小部件何时“应该重新绘制”,因为 Flutter 应该根据自己复杂的优化决策来决定何时何地重新渲染小部件树。
我认为paint() 方法是您定义“这就是该视图自身绘制的方式,(始终以及在必要时)”的地方
我发现的所有示例都只是从此方法返回 false ......但我注意到使用 true 与 false 时的不同行为。
如果我们总是返回 false,那么它如何重新绘制?(即使是假的,它也会重新绘制)
如果我们唯一可用的逻辑是将“oldDelegate”与(某事?)进行比较,那么为什么我们需要重写该方法呢?
我还没有看到任何示例来说明您为什么或如何返回 TRUE,以及为了做出该决定,此类示例的逻辑是什么样的。
一个知识渊博的人为什么以及如何决定返回 false?
一个知识渊博的人为什么以及如何决定回归真实?
谁能解释一下,就像你在和一个 13 岁的孩子(不是 Linus Torvalds)说话一样?
一个简单的代码示例和反例会很棒(而不是详尽的明确解释!)
flutter - 自定义画家在屏幕外绘制新传入数据?
我正在我的应用程序中为麦克风实现波形可视化。
上面for-loop
为我从麦克风获得的每个分贝值画线。当我使用麦克风获取数据时,分贝列表会变大,并开始在屏幕外绘制。
所以我的问题是如何将之前绘制的线条移回屏幕内以绘制新的传入分贝值?
android - 使用 Flutter 的 CustomPaint 类或使用资产是否占用资源更少?
我正在为 Android 和 iOS 构建一个简单的群聊应用程序。对于按钮上的符号,它们大多是简单的形状。我可以将 JPEG/PNG 作为资产添加到应用程序中,但我注意到 Flutter 有这个 CustomPaint 类。使用这个类是否占用更少的资源?
flutter - 如何在 Flutter 中展开包含 CustomPainter 的 Stack 的所有子项
假设在 Flutter 中我们有一个 Stack,其中包含:
- 大小为 Size.infinite 的 CustomPainter
- 任何其他不是自定义画家的小部件(我们也希望以与自定义画家完全相同的方式填充所有可用空间)
在此示例中,我为项目 2 使用了一个图标:
现在,很明显,我们还没有得到想要的结果——自定义画家是“扩展的” ,但图标不是。
但是我没有运气尝试了以下所有方法:
- 用 Expanded 包装图标(导致异常)
- 用 Expanded 包装 Stack 小部件(导致异常)
- 将 Icon 的大小定义为 Size.infinite (不会构建,因为 size 参数需要双精度)
- 使用fit: StackFit.expand作为 Stack 的参数,但这似乎只是使图标居中并且不会改变它的大小。