Я изменил вопрос из центра Tab
, чтобы настроить положение Tab
.
Поскольку я заметил, что Tab
фактически центрирован и в соответствии с document, он просто добавляет отступы.
Но если вы хотите, чтобы TabBar избегал безопасной области или не выравнивал элементы на вкладках по центру (автоматически), я не могу найти способ сейчас.
посмотрите на снимок экрана выше, значки / заголовки успешно избегают области черной полосы (за счет увеличения высоты панели вкладок), но не выравниваются по центру по вертикали. Я попытался поместить элемент Center
, чтобы обернуть табар в виджет вкладок, он увеличил высоту на весь экран.
Я также попытался обернуть вкладку в виджет Container
и получить набор свойств height
, но, похоже, вся высота не соответствует безопасной области (добавив a const). И я попытался обернуть весь Scaffold
виджетом SafeArea
, но безопасная область стала черной, и мы действительно хотим, чтобы летучая мышь вкладки стала выше, а затем элемент макета в этом более высоком контейнере, а не просто переместить контейнер.
Таким образом, вопрос может заключаться в том, как настроить положение виджета Tab
. потому что панель вкладок на самом деле центрирована, но дочерние элементы при ее компоновке избегают безопасной области, поэтому визуально она не выровнена по вертикали.
мой код:
@override
Widget build(BuildContext context) {
final icons = [Icons.library_books, Icons.photo, Icons.toc];
return Scaffold(
bottomNavigationBar: Material(
color: Theme.of(context).primaryColor,
child: SafeArea(child: TabBar(
controller: _tabController,
tabs: _titles.map((t) {
final i = _titles.indexOf(t);
return Tab(
text: t,
icon: Icon(icons[i]),
);
}).toList(),
),),
),
body: TabBarView(
controller: _tabController,
children: <Widget>[
PostListPage(
userid: widget.userid,
username: widget.username,
),
AlbumListPage(
userid: widget.userid,
username: widget.username,
),
TodoListPage(
userid: widget.userid,
username: widget.username,
),
],
)
);
}
}