タブの幅を完全に制御したいことがあると思います。
その場合Tab > child
にContainerを指定したりすると思います。
しかし表示されるタブの幅とこのchildに指定したContainerの間に余白があるため、意図した見た目になってくれないことがあります。
たとえば画面3等分にしてタブを表示したいのに、Containerのwidthに画面幅/3を指定してもうまくいきません。
この余白はTabBarのコードを見ると以下のように16とベタ打ちで定義されているようです。
この16を考慮してContainerの幅を指定することで意図した見た目にすることができます。
余白自体の調整はできませんが、タブの幅自体は画面3等分になります。
3等分するコード例はこちら
@override
Widget build(BuildContext context) {
double screenWidth = MediaQuery.of(context).size.width;
// TabBarで設定されるTabの左右の余白(tabs.dartのadjustedPaddingより推測)
final double tabContentPadding = 16;
final tabCount = 3;
final tabWidth =
(screenWidth - tabCount * 2 * tabContentPadding) / tabCount;
return DefaultTabController(
length: tabCount,
child: Scaffold(
body: SafeArea(
child: Column(
children: [
TabBar(tabs: [
Tab(
child: Container(
width: tabWidth,
color: Colors.pink,
),
),
Tab(
child: Container(
width: tabWidth,
color: Colors.amber,
),
),
Tab(
child: Container(
width: tabWidth,
color: Colors.cyan,
),
),
]),
],
),
),
));
}