首页 > 解决方案 > 如何根据颤动中的触摸事件移动custompainter

问题描述

我想制作一个时间选择器我已经使用自定义画家在颤振中进行了时钟设计我也使用相同的绘画方式制作了时钟指针,但现在我不知道如何在触摸事件上移动它们,就像设置时间一样。

class ClockHandsPainter extends CustomPainter{

 final Offset centerPoint;
 final double radius;
 final int degree;

 ClockHandsPainter( {this.centerPoint, this.radius, this.degree});


 @override
 void paint(Canvas canvas, Size size) {

  var paint = Paint();
  paint.strokeWidth = 2.0;
  paint.color = Colors.white;

  var calculator = Coordinate();

  final Coordinate topPointHourHand = calculator.calculateCoordinate(
    centerX: centerPoint.dx,
    centerY: centerPoint.dy,
    radius: radius,
    theta: degree
  );

  canvas.drawLine(
      Offset(centerPoint.dx, centerPoint.dy),
      Offset(topPointHourHand.dx, topPointHourHand.dy),
      paint
  );
 }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
  return true;
  }

}

我将如何检测用户是否单击并将时钟指针拖动到某个点以便将该指针移动到该点。

正如建议的那样,我尝试使用 GestureDetector 但无法从中获得任何输出

GestureDetector(
                  child: CustomPaint(
                    size: Size(0.0, 0.0),
                    painter: ClockHandsPainter(
                      radius: clockRadius - 60,
                      degree: 6,
                      centerPoint: Offset(0,190)
                    ),
                  ),
                  behavior: HitTestBehavior.opaque,
                  onTap: (){
                    print("tapped");
                  },
                ),

标签: dartflutter

解决方案


推荐阅读