enum ACETabBarAlignType { left, center, right }
源码分析
小菜分析 TabBar 源码,在 _TabBarState 中 TabBar 绘制过程中,多个子 Tab 通过 SingleChildScrollView 存放,最简单的方式,在 SingleChildScrollView 外添加可以设置对齐方式的 Container 即可;
if (widget.isScrollable) {
_scrollController ??= _TabBarScrollController(this);
tabBar = Container(
alignment: _alignType(widget.alignType ?? ACETabBarAlignType.center),
child: _scrollView(tabBar));
}
_alignType(alignType) {
Alignment _type;
switch (alignType) {
case ACETabBarAlignType.left:
_type = Alignment.centerLeft;
break;
case ACETabBarAlignType.center:
_type = Alignment.center;
break;
case ACETabBarAlignType.right:
_type = Alignment.centerRight;
break;
}
return _type;
}
_scrollView(tabBar) {
return SingleChildScrollView(
dragStartBehavior: widget.dragStartBehavior,
scrollDirection: Axis.horizontal,
controller: _scrollController,
physics: widget.physics,
child: tabBar);
}
案例尝试
小菜尝试了在