показывать диалог при длительном нажатии и всплывать при поднятом пальце

Я хочу показать диалоговое окно, когда пользователь долго нажимает на элемент и выталкивает его, когда палец вверх, но он не может обнаружить касание.

Я помещаю диалог в другой GestureDetector и использую его свойство onTapUp для всплывающего диалога.

GestureDetector(
 child: studentIcon(index, context),
 onLongPress: () {
   showDialog(
       context: context,
       builder: (context) {
         return GestureDetector(
           onTapUp: (detail) {
             Navigator.pop(context);
           },
           child: DialogDetail(
             index: index,
           ),
         );
       });
 },

Я ожидаю появления диалогового окна после поднятия пальца после долгого нажатия.


person Sadegh Abedi    schedule 27.03.2019    source источник
comment
Насколько я знаю, вы не можете этого сделать, потому что AlertDialog или другой Dialog не имеет общего контекста с местом, из которого изначально вызывается showDialog(). Таким образом, это 2 разных контекста.   -  person CopsOnRoad    schedule 27.03.2019
comment
Вы разобрались, как это сделать   -  person GILO    schedule 14.04.2020
comment
Итак, вы хотите показать диалог, когда пользователь будет удерживать кнопку?   -  person Totally Not Hardik    schedule 25.07.2020


Ответы (2)


Вы не можете этого сделать, так как в GestureDetector есть проблема context. Пожалуйста, следуйте этому ответу, чтобы реализовать эту вещь.

person Devarsh Ranpara    schedule 24.01.2021

Попробуйте сделать метод, чтобы открыть диалоговое окно. я предоставляю код диалогового окна предупреждения..

 void _showText(BuildContext context) {
   showDialog(
    context: context,
    barrierDismissible: false,
    builder: (context) {
      return AlertDialog(
        content: Text(
            "User name :${nameEditText.text} \nPassword : ${passwordEditText.text}"),
        actions: <Widget>[
          new FlatButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: new Text("OK"))
        ],
      );
    });
   }
   }

после этого вызывается при нажатии кнопки..

     child: RaisedButton(
            padding: EdgeInsets.all(15.0),
            onPressed: () {
             _showText(context);
            },
            child: Text(
              "Submit",
              style: TextStyle(fontSize: 15, color: Colors.white),
            ),
            color: Colors.blue,
          ),
person Infusion Analysts    schedule 27.03.2019
comment
Вопрос в том, чтобы всплывать диалог, когда палец покидает экран. Использование кнопки для выполнения действия — это не то, что требуется. - person Daniel Kao; 25.07.2020