小编Gui*_*rme的帖子

Flutter CustomPaint 不重画

我无法让定制画家重新绘制。我尝试使用 Listenable、回调、setState,但没有任何内容重新绘制屏幕。

文档是这样说的:

触发重绘的最有效方法是:

  • 扩展此类并向 CustomPainter 的构造函数提供重绘参数,其中该对象会在需要重绘时通知其侦听器。
  • 扩展 Listenable(例如通过 ChangeNotifier)并实现 CustomPainter,以便对象本身直接提供通知。无论哪种情况,CustomPaint 小部件或 RenderCustomPaint 渲染对象都将侦听 Listenable 并在动画发生时重新绘制,从而避免管道的构建和布局阶段。

但代码没有按预期工作。

这是我正在使用的代码:

import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

main() {
  runApp(MaterialApp(
    home: Scaffold(appBar: AppBar(), body: Pad()),
  ));
}

class Pad extends StatefulWidget {
  @override
  _PadState createState() => _PadState();
}

class _PadState extends State<Pad> {
  @override
  Widget build(BuildContext context) {
    final painter = Painter();
    return GestureDetector(
        onTap: () {
          setState(() {
            painter.addY(10);
          });
        },
        child: CustomPaint(
          painter: painter,
          child: Container(),
        ));
  }
}

class Painter extends CustomPainter …
Run Code Online (Sandbox Code Playgroud)

android dart flutter

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

标签 统计

android ×1

dart ×1

flutter ×1