Как получить кликабельный текст в панели приложений в Flutter? - PullRequest
0 голосов
/ 09 октября 2018

Мне известно, что я могу использовать IconButton в действиях AppBar во Flutter.Но вместо значка я бы хотел, чтобы пользователь увидел слова «Сохранить» или «Назад» или «Отмена» и щелкнул по ним на панели приложений.Как мне этого добиться?Вот часть моего кода, который показывает панель приложений.Вместо иконки сохранения я хотел бы использовать «Сохранить»

return Scaffold(
    appBar: AppBar(
      leading: IconButton(icon: Icon(Icons.arrow_back),
      tooltip: "Cancel and Return to List",
      onPressed: () {
        Navigator.pop(context, true);
      },
    ),
      automaticallyImplyLeading: false,
      title: Text(title),
      actions: <Widget>[

        IconButton(
          icon: Icon(Icons.save),
          tooltip: "Save Todo and Retrun to List",
          onPressed: () {
            save();
          },
        )
      ],
    ),//AppBar

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Вы можете использовать FlatButton в списке AppBar actions: необходимо определить

appBar: AppBar(
  title: Text("Test Screen"),
  actions: <Widget>[
    FlatButton(
      textColor: Colors.white,
      onPressed: () {},
      child: Text("Save"),
      shape: CircleBorder(side: BorderSide(color: Colors.transparent)),
    ),
  ],
),

onPressed, иначе кнопка будет отключена.Также обратите внимание, что по умолчанию форма кнопки создаст заполненный прямоугольник для эффекта InkWell.Установив для свойства shape значение CircleBorder, мы получим более приятный эффект для нажатого состояния.

Например:

Не нажато:

нажата:

0 голосов
/ 24 июля 2019

Если у вас короткая строка, то вы можете передать Text виджет вместо Icon в аргумент IconButton.icon:

IconButton(
  icon: Text(
    "Save",
    style: Theme.of(context).textTheme.button.apply(
      color: Theme.of(context).appBarTheme.actionsIconTheme.color,
    ),
  ),
  onPressed: _save,
),

К сожалению, он не будет работать для более длинного текста, такого как Отмена .

0 голосов
/ 09 октября 2018

Вы можете заключить ваш Text в GestureDetector и использовать его свойство onTap для обработки ваших событий.

Пример

actions: <Widget>[
  GestureDetector(child: Text("Save"), onTap: save)
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...