首页 > 解决方案 > 处理 CustomPainter - Flutter 上的点击

问题描述

我正在构建这个简单的 应用程序

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Theme.of(context).backgroundColor,
      body: CustomPaint(
        painter: CircuitPainter(),
        size: MediaQuery.of(context).size,
      ),
    );
  }
}

在我的 CircuitPainter 中,我正在绘制一些也在扩展 CustomPainter 的 TrainSwitch。

class CircuitPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {

    ...

    // First switch
    Point origin = new Point(size.width * 0.05, bottomHeight);
    Point endCurveFirstSwitch = new Point(size.width * 0.20, middleHeight);
    Point firstMiddlePoint = new Point(size.width * 0.30, middleHeight);
    Point firstBottomPoint = new Point(size.width * 0.20, bottomHeight);
    TrainSwitch firstSwitch = new TrainSwitch(
        origin, firstBottomPoint, firstMiddlePoint,
        endCurve: endCurveFirstSwitch);
    firstSwitch.paint(canvas, size);

我想在单击开关时执行操作。我发现了一些主题,但他们总是建议将 CustomPaint 包装在 GestureDetector 中,但就我而言,我想在每个 TrainSwitch 上进行检测,该怎么做?

标签: fluttercanvasdart

解决方案


推荐阅读