У меня есть этот кусок кода, и что он делает, когда при касании на экране появляется синий круг и следует за местом касания / перетаскивания моего пальца. Я хочу, чтобы этот синий круг появлялся каждый раз, когда на экране появляется новый палец, даже если есть 2 или 3 касания одновременно. Пожалуйста, помогите мне, я полностью застрял. Я пытался добавить более одного события onpointerdown, но это плохая идея.
class SecondScreen extends StatefulWidget {
@override
State createState() => new SecondScreenState();
}
class SecondScreenState extends State<SecondScreen> {
GlobalKey _paintKey = new GlobalKey();
Offset _offset;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text('Choosing..',
style: TextStyle(
fontSize: 50,
color: Colors.white
),
),
),
body:
GestureDetector(
child: Listener(
onPointerMove: (PointerMoveEvent event) {
RenderBox referenceBox = _paintKey.currentContext
.findRenderObject();
Offset offset = referenceBox.globalToLocal(
event.position);
setState(() {
_offset = offset;
});
},
onPointerDown: (PointerDownEvent event) {
},
onPointerUp: (PointerUpEvent event) {
setState(() {
_offset = null;
});
},
child: new CustomPaint(
key: _paintKey,
painter: new MyCustomPainter(_offset),
child: new ConstrainedBox(
constraints: new BoxConstraints.expand(),
)
,
)
)
)
);
}
}
class MyCustomPainter extends CustomPainter {
final Offset _offset;
MyCustomPainter(this._offset);
@override
void paint(Canvas canvas, Size size) {
if (_offset == null) return;
canvas.drawCircle(_offset, 100.0, new Paint()..color = Colors.blue);
}
@override
bool shouldRepaint(MyCustomPainter other) => other._offset != _offset;
}