在Flutter中,自定义绘制Widget通常是通过继承StatefulWidget并在其对应的State类中实现自定义绘制逻辑。以下是一个简单的自定义绘制Widget的例子:
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
 
class CustomPaintWidget extends StatefulWidget {
  @override
  _CustomPaintWidgetState createState() => _CustomPaintWidgetState();
}
 
class _CustomPaintWidgetState extends State<CustomPaintWidget> {
  @override
  void initState() {
    super.initState();
  }
 
  @override
  Widget build(BuildContext context) {
    return CustomPaint(
      painter: MyCustomPainter(),
    );
  }
}
 
class MyCustomPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    // 在这里绘制你的图形
    final paint = Paint()..color = Colors.blue;
    canvas.drawCircle(Offset(size.width / 2, size.height / 2), 50, paint);
  }
 
  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    // 如果你的绘制逻辑需要重新执行,返回true
    return false;
  }
}在这个例子中,我们创建了一个CustomPaintWidget类,它继承自StatefulWidget。在_CustomPaintWidgetState的build方法中,我们返回一个CustomPaint Widget,并设置painter属性为我们自定义的MyCustomPainter。MyCustomPainter类实现了绘制逻辑,在paint方法中绘制了一个蓝色的圆。shouldRepaint方法返回了一个布尔值,表示是否需要重新绘制画布;在这个例子中,我们假设不需要重新绘制。