Флаттер: Снэк-бар с включенной опцией - PullRequest
0 голосов
/ 27 апреля 2020

Я использую приведенный ниже код для Snackbar.

void _showSnackBar(BuildContext context, String message, Color color) {
    final snackBar = SnackBar(
      duration: Duration(seconds: 3),
      backgroundColor: color,
      content: Text(message),
    );
    _scaffoldKey.currentState.showSnackBar(snackBar);
  }

Вот как я называю его везде, где требуется.

_showSnackBar(context,'Account created Successfully.',Colors.green);

Работает отлично, совершенно нормально. Я не вижу никаких проблем.

Но теперь мне нужно добавить опцию Onclick в Snackbar. Как показано ниже, код.

action: SnackBarAction(
              label: 'Undo',
              onPressed: () {
                // Some code to undo the change.
              },
            ),

Я не уверен, как его добавить и где его добавить.

Пожалуйста, предложите.

Редактировать: Немного больше объяснений того, чего я хочу достичь.

void _showSnackBar(BuildContext context, String message, Color color) {

как передать параметры для события OnPressed? Это проблема, которую я получаю.

Ответы [ 3 ]

1 голос
/ 27 апреля 2020

Этого можно достичь с помощью следующего кода:

    void _showSnackBar(BuildContext context, String message, Color color) {
        final snackBar = SnackBar(
          duration: Duration(seconds: 3),
          backgroundColor: color,
          content: Text(message),
          action: SnackBarAction(
              label: 'Undo',
              onPressed: (){}
          )
        );
        _scaffoldKey.currentState.showSnackBar(snackBar);
      }

Более подробную информацию о SnackBar можно найти здесь: https://flutter.dev/docs/cookbook/design/snackbars

1 голос
/ 27 апреля 2020

Я думаю, что это может быть достигнуто с:

SnackBar(
  content: Text('Yay! A SnackBar!'),
  action: SnackBarAction(
    label: 'Undo',
    onPressed: () {
      // Some code to undo the change.
    },
  ),
)
0 голосов
/ 27 апреля 2020

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

Как я вижу:

    void _showSnackBar(BuildContext context, String message, Color color) {
            final snackBar = SnackBar(
              duration: Duration(seconds: 3),
              backgroundColor: color,
              content: Text(message),
              action: SnackBarAction(
                  label: 'Undo',
                  onPressed: (){
                    print(color);
   /// do what you want with passed color or message
                   }
              )
            );
            _scaffoldKey.currentState.showSnackBar(snackBar);
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...