dart - 如何根据颤动中的触摸事件移动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");
},
),
解决方案
推荐阅读
- java - 用于存储连续时间间隔并有效执行更新和删除的数据结构
- sql - 我可以在 SQL 中的 Case When 中删除非字母数字字符吗?
- c# - FakeItEasy - 是否可以异步测试约束(即 MatchesAsync)?
- android - Kotlin 中的谷歌地图平铺层
- git - GIT:将整个文件夹的历史记录从一个仓库复制到另一个仓库
- dojo - Dojo Slider isReversed
- angular - 如何在 Angular 7 中使用 KeyValue 接口?
- activemq - ActiveMQ 配置:BrokerXMLConfig activemq.xml - 未找到相对路径文件
- r - 如何在 igraph 中保留网络的一般形状?
- android - 如何读取所有子节点值并在firebase android中使用它们