Я пытаюсь создать следующий эффект: когда пользователь долго нажимает на пустой экран, появляется прямоугольник.Не поднимая палец, я хочу, чтобы пользователь мог перетаскивать один из краев прямоугольника (например, по вертикали).
Я могу добиться этих эффектов отдельно (долгое нажатие, отпускание, перетаскивание), но мне нужно иметь их, не поднимая палец.
В настоящее время мой код выглядит следующим образом:
@override
Widget build(BuildContext context) {
return GestureDetector(
onPanStart: startDrag,
onPanUpdate: onDrag,
onPanEnd: endDrag,
child: CustomPaint(
painter: BoxPainter(
color: BOX_COLOR,
boxPosition: boxPosition,
boxPositionOnStart: boxPositionOnStart ?? boxPosition,
touchPoint: point,
),
child: Container(),
),
);
}
Это обеспечивает перетаскивание края и основано на этомучебное пособие .
Чтобы элемент отображался при долгом нажатии, я использую виджет Opacity
.
@override
Widget build(BuildContext context) {
return new GestureDetector(
onLongPress: () {
setState(() {
this.opacity = 1.0;
});
},
child: new Container(
width: width,
height: height,
child: new Opacity(
opacity: opacity,
child: PhysicsBox(
boxPosition: 0.5,
),
),
),
);
}