Невозможно изменить высоту кнопки во флаттере
Я новичок в трепете. Я пытаюсь вставить в "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()
, но это не имеет отношения к высоте кнопок.