Flutter: перетаскивание виджетов по экрану (не перетаскивание)

Я хочу просто перетаскивать виджеты по экрану, а не перетаскивать.

Но всякий раз, когда я оставляю его и снова начинаю перетаскивать, он начинает перетаскиваться с того места, с которого начал. Как будто это было 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,
              ),
            ),
          ),
        ],
      ),
    );
  }
}

Перетащите виджеты по экрану


person Detained Developer    schedule 26.06.2021    source источник
comment
Каков ваш ожидаемый результат?   -  person anirudh    schedule 26.06.2021
comment
@anirudh я получаю ожидаемый результат, просто виджеты сбрасывают свои позиции после окончания DragEvent.   -  person Detained Developer    schedule 26.06.2021
comment
это отвечает на ваш вопрос?   -  person anirudh    schedule 26.06.2021
comment
Сам вопрос заключается в том, чтобы разместить snap там, где другие виджеты освобождают для него место, точно так же, как когда мы размещаем App Icons на главном экране. Так что вопрос не по делу. ХОТЯ, кто-то дал решение, которое может сработать для меня! Спасибо @anirudh, что поделились этим!   -  person Detained Developer    schedule 26.06.2021
comment
@anirudh сообщение, которым вы поделились, содержит ответ, не связанный с вопросом этого человека, но он работает для меня! Спасибо!   -  person Detained Developer    schedule 26.06.2021
comment
Хаха классно надеюсь помогло   -  person anirudh    schedule 26.06.2021