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

#flutter #dart

#флаттер #дротик

Вопрос:

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

Вот мой код-

           actions: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(
                elevation: 7,
                color: Colors.black26,
                child: Text('Button'),
                onPressed: () {
                  _scaffoldKey.currentState
                      .showSnackBar(SnackBar(content: Text("Welcome")));
                },
              ),
            ),
          ],

  

Комментарии:

1. Вы пробовали применить к кнопке метод блока с таймером?

2. @fish-like-mammal Нет, я не пробовал. Можете ли вы опубликовать подробный ответ?

Ответ №1:

Ответ №2:

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

            bool _enabled = true;


           onPressed: !_enabled
            ? null 
            : () {
              setState(() => _enabled = false);
              _scaffoldKey.currentState
                  .showSnackBar(SnackBar(content: Text("Welcome")));
             
               // Enable it after 1s.
               Timer(Duration(seconds: 1), () => setState(() => _enabled = true));
            },
  

Комментарии:

1. Спасибо за простое решение! Хотя вы перепутали правду и ложь, вы должны отредактировать это.