Невозможно изменить высоту кнопки во флаттере

Я новичок в трепете. Я пытаюсь вставить в "AppBar" простую "содержащуюся кнопку" с текстом на ней. (Например, материальный дизайн "содержит кнопку" здесь)

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

Я могу явно решить проблему с установкой отступов, как в примере ниже, но меня расстраивает то, что я не понимаю, почему я не могу изменить высоту самой кнопки. Я также попытался обернуть его контейнером или sizeBox, как показано в ответах здесь, но он не внес никаких видимых изменений (все же кнопка заполнила всю высоту appBar)

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

      appBar: AppBar(
      automaticallyImplyLeading: false,
      title: Text(widget.title),
      actions: <Widget>[
        Padding(
            padding: EdgeInsets.only(top: 7.0, bottom: 7),
            child: Container(
              width: 80,
              child: FlatButton(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(5.0),
                  ),
                  color: Color.fromRGBO(58, 90, 128, 1),
                  onPressed: () {},
                  child: Text('Button')
              ),
            )
        ),
        ]
  )

1 ответ

Я думаю AppBar()следует рекомендациям по материальному дизайну для AppBar.

Также это связано с Материалом Scaffold() виджет.

Вы можете ознакомиться с этой документацией

В этом конкретном случае я думаю, что лучший способ контролировать высоту - использоватьPadding()около. Вы можете стереть Контейнер в своем коде.

appBar: AppBar(
    automaticallyImplyLeading: false,
    title: Text(widget.title),
    actions: <Widget>[
      Padding(
        padding: const EdgeInsets.all(8.0),
        child: FlatButton(
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(5.0),
            ),
            color: Color.fromRGBO(58, 90, 128, 1),
            onPressed: () {},
            child: Text('Button')),
      ),
    ]),

Вы можете контролировать полный размер AppBar, используя PreferredSize(), но это не имеет отношения к высоте кнопок.

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