这是我的小部件
child: Scaffold(
body: GestureDetector(
behavior: HitTestBehavior.deferToChild,
onPanUpdate: (DragUpdateDetails details) {
setState(() {
RenderBox box = context.findRenderObject();
pos2 = box.globalToLocal(details.globalPosition);
listPos = List.from(listPos)..add(pos2);
});
},
child: Stack(
children: Widgets<>[
Container(
child: Column(
children: <Widget>[
GestureDetector(
onTap: () {
print('measure');
setState(() {
toMeasure = true;
});
},
child: Icon(
Icons.linear_scale,
color: Colors.white,
),
),
],
),
CustomPaint(
painter: getWidget(listPos, pos1),
child: Container(),
),
),
],
),
)
);
当用户点击图标时,我正在尝试切换到绘图区域。但是一旦在用户点击图标时创建了自定义绘画区域,之后它就不会检测到任何点击。
getWidget 方法根据点击的图标返回一个小部件。这是小部件之一。当这个小部件返回时,点击功能不再起作用。
class Draw extends CustomPainter {
List<Offset> listPos;
Offset pos;
Draw(this.listPos, this.pos);
@override
void paint(Canvas canvas, Size size) {
final paint = Paint();
paint.color = Colors.greenAccent;
paint.style = PaintingStyle.stroke;
paint.strokeWidth = 4;
var c = Offset(size.width / 2, size.height / 2);
PointMode pointMode = PointMode.points;
for (var i = 0; i < listPos.length; i++) {
canvas.drawPoints(pointMode, listPos, paint);
}
}
@override
bool shouldRepaint(Draw old) {
return old.listPos != listPos;
}
}