탭바란 이 기능을 의미합니다.
해당하는 탭을 누르면 TabController 를 사용하여 페이지 전환이 이루어지게 됩니다.


보이십니까…
TabController
초기화
탭 컨트롤러는 탭의 개수를 관리합니다.
현재 페이지는 탭이 2개라서 length 2 를 갖고 있습니다.
갯수를 늘리고 싶다면
length
의 값을 탭의 개수만큼 늘려야 합니다. @override
void initState() {
super.initState();
_tabController = new TabController(length: 2, vsync: this);
}
TabBar
구성
TabBar
는 탭을 보여주는 UI 요소입니다.controller
는 앞서 선언한TabController
로 연결되어 탭과 탭 내용의 동기화를 처리합니다.
tabs
배열에 각각Tab
위젯을 사용하여, 탭에 들어갈 내용을 정의합니다. 여기서는 각각 자동차와 대중교통 아이콘을 사용하는 두 개의 탭이 정의되어 있습니다.
Widget _buildTabBar(){
return TabBar(
controller: _tabController,
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
],
);
}
TabBarView
구성
TabBarView
는 각 탭에 대응하는 내용을 보여주는 영역입니다.children
배열에는 각각의 탭이 선택되었을 때 표시할 내용을 정의합니다.
- 위 코드에서는 탭이 선택될 때마다 서로 다른 색상의
Container
가 표시되도록 했습니다.
Widget _buildTabBarView(){
return TabBarView(
controller: _tabController,
children: [
Container(color: Colors.green),
Container(color: Colors.red),
],
);
}
전체 코드는 다음과 같습니다.
import 'package:flutter/material.dart';
class ProfileTab extends StatefulWidget {
@override
_ProfileTabState createState() => _ProfileTabState();
}
class _ProfileTabState extends State<ProfileTab> with SingleTickerProviderStateMixin{
TabController? _tabController;
@override
void initState() {
super.initState();
_tabController = new TabController(length: 2, vsync: this);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
_buildTabBar(),
Expanded(child: _buildTabBarView()),
],
);
}
Widget _buildTabBar(){
return TabBar(
controller: _tabController,
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
],
);
}
Widget _buildTabBarView(){
return TabBarView(
controller: _tabController,
children: [
Container(color: Colors.green),
Container(color: Colors.red),
],
);
}
}
공식 개발문서 참고하고 싶다면 여기
[프로필 앱 만들기]
1. 프로젝트 셋팅, 헤더
https://inblog.ai/hj/1-프로필-앱-만들기--30850
2. 프로필 카운드 바 만들기
https://inblog.ai/hj/2-프로필-앱-만들기-30576
3. 버튼 만들기
https://inblog.ai/hj/3-프로필-앱-만들기-31311
4. 탭바 만들기
https://inblog.ai/hj/4-프로필-앱-만들기-31312
5. 탭바뷰에 이미지 Grid 로 출력하기(끝)
https://inblog.ai/hj/5-프로필-앱-만들기-31313
Share article