4. 프로필 앱 만들기

탭바 구현하기
HootJem's avatar
Oct 10, 2024
4. 프로필 앱 만들기
탭바란 이 기능을 의미합니다. 해당하는 탭을 누르면 TabController 를 사용하여 페이지 전환이 이루어지게 됩니다.
notion image
notion image
보이십니까…
 
  1. TabController 초기화
탭 컨트롤러는 탭의 개수를 관리합니다. 현재 페이지는 탭이 2개라서 length 2 를 갖고 있습니다. 갯수를 늘리고 싶다면 length 의 값을 탭의 개수만큼 늘려야 합니다.
@override void initState() { super.initState(); _tabController = new TabController(length: 2, vsync: this); }
 
  1. 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)), ], ); }
 
  1. 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

[HootJem] 개발 기록 블로그