标签: flutter-custompaint

CustomPainter.shouldRepaint() 在 Flutter 中如何工作?

在 Flutter 中,创建CustomPainter时,有一个重写方法,shouldRepaint(),您可以返回 true 或 false...大概是为了告诉系统是否重新绘制视图。

\n

文档中,该方法的描述是:

\n
\n

shouldRepaint(covariant CustomPainter oldDelegate) \xe2\x86\x92 bool 每当向 RenderCustomPaint 对象提供\n自定义绘制委托类的新实例时\n或在使用该对象的新实例创建新的\nCustomPaint 对象时调用\n自定义\npainter委托类(这相当于同一件事,因为后者是根据前者实现的)。[...]

\n
\n

除了它返回一个布尔值之外,我基本上不明白任何其他内容。这让我很头疼!我还怀疑深入研究“自定义画家委托类”或“RenderCustomPaint 对象”的定义不会是一种启发性的体验。

\n

我很困惑,因为:

\n
    \n
  • 我认为我们不必担心小部件何时“应该重新绘制”,因为 Flutter 应该根据其自身复杂的优化决策来决定何时何地重新渲染小部件树。

    \n
  • \n
  • 我认为 Paint() 方法是您定义“这就是该视图如何绘制自身的方式,(无论何时何地有必要)”的地方

    \n
  • \n
  • 我发现的所有示例都只是从该方法返回 false...但我注意到使用 true 与 false 时的不同行为。

    \n
  • \n
  • 如果我们总是返回 false,那么它如何重新绘制呢?(即使是假的,它也会重新绘制)

    \n
  • \n
  • 如果我们唯一可用的逻辑是将“oldDelegate”与(某物?)进行比较,那么为什么我们需要重写该方法呢?

    \n
  • \n
  • 我还没有看到任何示例来演示为什么或如何返回 TRUE,以及为了做出该决定而这样的示例的逻辑是什么样的。

    \n
  • \n
\n

一个有知识的人为什么以及如何决定返回 false?

\n

一个有知识的人为什么以及如何决定回归真实?

\n

谁能像你在和一个 13 岁的孩子(不是 Linus Torvalds)说话一样解释它?

\n

一个简单的代码示例和反例会很棒(而不是详尽的明确解释!)

\n

custom-view flutter flutter-custompainter flutter-custompaint

6
推荐指数
1
解决办法
1892
查看次数

是否可以在 Flutter 的自定义绘画中提供渐变模糊效果,如下图所示?

我正在对下面的输出进行编码,我得到了我想要的设计,但无法在画布内获得模糊效果。

这是我试图构建的输出,
我想要的输出

这就是我尝试过的 我的输出

这是代码,

class MyCustomPainter extends CustomPainter {

@override



 void paint(Canvas canvas, Size size) {
    Paint paint0 = Paint()
      ..color = const Color.fromARGB(128,255,255,255)
    ..style = PaintingStyle.fill
    ..strokeWidth = 2.0;

Path path0 = Path();
path0.moveTo(size.width * 0.1500300, size.height * 0.1238500);
path0.cubicTo(
    size.width * 0.0037200,
    size.height * 0.1023500,
    size.width * 0.0522600,
    size.height * 0.7552500,
    size.width * 0.1500500,
    size.height * 0.8761750);
path0.cubicTo(
    size.width * 0.2767600,
    size.height * 0.8761750,
    size.width * 0.7234100,
    size.height * 0.8735500,
    size.width * 0.8501100,
    size.height * 0.8735500);
path0.cubicTo(
    size.width …
Run Code Online (Sandbox Code Playgroud)

user-interface paint flutter flutter-layout flutter-custompaint

4
推荐指数
1
解决办法
1945
查看次数