Я хочу просто перетаскивать виджеты по экрану, а не перетаскивать.
Но всякий раз, когда я оставляю его и снова начинаю перетаскивать, он начинает перетаскиваться с того места, с которого начал. Как будто это было reset
.
Я предполагаю, что сборка вызывается снова и снова, поэтому она автоматически использует original position values
. Как я могу это исправить? Каким должен быть код?
Другими словами, position
устанавливается в (100, 100)
после окончания DragEvent
. И затем следующее перетаскивание начинается с (100, 100)
вместо последней позиции, в которую был перемещен виджет.
Я также пробовал это с GlobalPosition
, но получил те же результаты. Вот мой код:
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
double x1 = 100.0;
double x2 = 200.0;
double y1 = 100.0;
double y2 = 200.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: Text('Drag widget on screen'),
),
body: Stack(
children: [
Positioned(
left: x1,
top: y1,
child: GestureDetector(
onHorizontalDragUpdate: (details) {
setState(() {
x1 = details.localPosition.dx;
y1 = details.localPosition.dy;
});
},
child: Container(
width: 64,
height: 64,
color: Colors.amber,
),
),
),
Positioned(
left: x2,
top: y2,
child: GestureDetector(
onHorizontalDragUpdate: (details) {
setState(() {
x2 = details.localPosition.dx;
y2 = details.localPosition.dy;
});
},
child: Container(
width: 64,
height: 64,
color: Colors.red,
),
),
),
],
),
);
}
}
DragEvent
. - person Detained Developer   schedule 26.06.2021snap
там, где другие виджеты освобождают для него место, точно так же, как когда мы размещаемApp Icons
на главном экране. Так что вопрос не по делу. ХОТЯ, кто-то дал решение, которое может сработать для меня! Спасибо @anirudh, что поделились этим! - person Detained Developer   schedule 26.06.2021