Development/Flutter
[Flutter] tabbar background color in flutter
알렉산도대왕
2023. 9. 1. 17:18
간단해 보이는 탭바의 배경색을 변경하는 로직을 짜보려고 했는데 생각보다 만만하지 않았기에 그 내용을 간추려 적어보려고 합니다.
우선 구현하고자 했던 View는 아래와 이미지와 같습니다.
1. 상단에는 여행지의 리스트가 보이고 2.하단에는 두개의 탭이 있는 화면입니다.
상단의 여행지 리스트와 하단의 탭 리스트 모두 스크롤이 되어야 했기에 NestedScrollView를 사용해서 구현했습니다.
NestedScrollView를 사용하는 예제는 많이 있으니 찾아보시고 혹시 code snippet이 필요하시면 댓글로 남겨주세요 :)
그럼 탭바의 배경색을 변경하는 방법에 대해 바로 설명해보겠습니다.
PreferredSizeWidget renderTabBar() {
var _tabBar = TabBar(
. . .
tabs: List<Widget>.generate(
tabList.length,
(int index) => Tab(text: tabList.elementAt(index), height: TABBAR_HEIGHT),
),
);
return PreferredSize( // <- 핵심
preferredSize: _tabBar.preferredSize,
child: Material( // <- 핵심
color: const Color(0xFFE8E8E8),
child: SizedBox(
width: Get.width,
child: Center(child: _tabBar),
),
),
);
}
핵심은 만들고자 하는 TabBar를 변수로 만들어서 PreferredSize와 Material로 감싼 후 color를 지정해주면 되는것입니다.
SizedBox는 TabBar 영역에만 색상이 적용되길래 탭바의 전체 영역에 색상을 적용하기 위해 추가해줬습니다.
추가로 한가지 팁을 더 드리자면, Tab의 사이즈를 키우고 싶으실때는 Tab()의 height 값을 지정해주시면 됩니다.
저는 TabBar의 padding, labelPadding 값을 가지고 구현해보려고 했는데 TabBarView의 size overflow가 나서 조금 해맸습니다. ㅋ;;
이상입니다.
728x90