На Vertica Drag Update не работает должным образом

Я написал следующий код, который заставляет контейнер перемещаться влево, когда пользователь этого хочет. я использовал здесь GestureDetectoronPanUpdate для обработки свайпа влево также я использовал onPanEnd, чтобы вернуть контейнер в его местоположение по умолчанию, сбросив мой глобальный double swipH varible to 0` и то же самое с вертикальным

    import 'package:flutter/material.dart';

double swipH = 0 ;
double swipV = 0 ;
class App extends StatefulWidget {
  const App({Key? key}) : super(key: key);

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {

 bool  isV = true ;
 bool isH = true ;


  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body:   Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [

          GestureDetector(




              onLongPress: (){
                debugPrint('vvvvvvvvv');
              },




                onPanUpdate:(noti){

                  if(noti.delta.dy < 0&&isV){
                    isH = false;
                    swipV += noti.delta.dy;
                    setState(() {});
                  }

                  if(noti.delta.dx < 0&&isH){
                    isV = false;
                    debugPrint('Started');
                    swipH += noti.delta.dx;
                    setState(() {});
                  }
                },

            onPanEnd:(noti){
                isV = true ;
               isH = true ;
              swipH=0;
              swipV = 0 ;
              setState(() {});
            },


              child: Transform.translate(
                offset: Offset(swipH, swipV),
                child: Container(
                  padding: const EdgeInsets.all(8),
                  height: 200,
                  width: MediaQuery.of(context).size.width / 2,
                  color: Colors.red,
                ),
              ),

            ),

          ],
        ),
      ),

    );
  }
}

РЕДАКТИРОВАТЬ извините, я забыл включить следующее

 onLongPress: (){
 debugPrint('onLongPress');
  },

enter image description here

любая хорошая идея вместо этого приветствуется

все работает нормально без использования onLongPress .. но мне нужен этот метод с той же логикой в ​​​​примере

Можете ли вы предоставить GIF или изображение о вашем желаемом выходе? Я не получаю only one side in every single swipe

Yeasin Sheikh 09.04.2022 13:58

сделано, пожалуйста, посмотрите

Jack 09.04.2022 15:07

я тоже редактирую код

Jack 09.04.2022 15:20
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
3
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы можем использовать другой bool? для отслеживания начального направления движения и проверки сопротивления.

double swipH = 0;
double swipV = 0;

class App extends StatefulWidget {
  const App({Key? key}) : super(key: key);

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  bool? _isDx;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            GestureDetector(
              onPanUpdate: (noti) {
                if (noti.delta.dy < 0 && _isDx != false) {
                  swipV += noti.delta.dy;
                  _isDx = true;
                }

                if (noti.delta.dx < 0 && _isDx != true) {
                  swipH += noti.delta.dx;
                  _isDx = false;
                }
                setState(() {});
              },
              onPanEnd: (noti) {
                debugPrint('end');
                swipH = 0;
                swipV = 0;
                _isDx = null;
                setState(() {});
              },
              child: Transform.translate(
                offset: Offset(swipH, swipV),
                child: Container(
                  padding: const EdgeInsets.all(8),
                  height: 200,
                  width: MediaQuery.of(context).size.width / 2,
                  color: Colors.red,
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

вы уверены, что видите полный вопрос Изменить?

Jack 09.04.2022 16:54

хорошо, я видел последний i want only one side in every single swipe 😅 и приступаю к решению, увидев изображение, можете ли вы предоставить GIF или с какой проблемой вы столкнулись из этого поста

Yeasin Sheikh 09.04.2022 17:02

без сомнения, вы решили проблему ... но когда я использую длительное нажатие на каждую логику в моем примере, а ваш пример не работает должным образом ... это была моя настоящая проблема

Jack 09.04.2022 17:13

Вы можете попробовать вызвать onLongPressMoveUpdate

Yeasin Sheikh 09.04.2022 17:40

я решил это с помощью Listener Widget .. он уже подходит для GtDetctor

Jack 09.04.2022 18:11

Другие вопросы по теме