함께 공부하는 Flutter
[Flutter] DefaultTabController & TabBarView
냥냥박사에디
2023. 5. 28. 17:01
반응형
플러터(Flutter)에서는 탭 기반 탐색(tab-based navigation)을 구현하기 위해 사용되는 세 가지 주요 위젯이 있습니다. 이들은 DefaultTabController
, TabBarView
, TabPageSelector
입니다.
DefaultTabController
: 탭 컨트롤러의 상태를 관리하며, 다양한 탭 간의 전환을 가능하게 해주는 위젯입니다. 보통 위젯 트리의 루트에 배치되며, 자손들에게 탭 컨트롤러를 제공합니다.TabBarView
: 각 탭에 해당하는 내용을 표시하는 위젯입니다.TabController
를 인자로 받아들이며, 다른 탭 뷰 사이의 전환을 자동으로 애니메이션화합니다.TabPageSelector
: 현재 선택된 탭에 대한 시각적인 표시기를 제공하는 위젯입니다.TabController
를 인자로 받아들이며, 활성 탭을 강조하는 도트의 행을 표시합니다.
다음은 이러한 위젯들을 사용하는 간단한 예시 코드입니다:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('탭 예제'),
),
body: DefaultTabController(
length: 3, // 탭의 개수
child: Column(
children: [
TabBar(
tabs: [
Tab(text: '탭 1'),
Tab(text: '탭 2'),
Tab(text: '탭 3'),
],
),
Expanded(
child: TabBarView(
children: [
Center(child: Text('탭 1의 내용')),
Center(child: Text('탭 2의 내용')),
Center(child: Text('탭 3의 내용')),
],
),
),
SizedBox(height: 10),
TabPageSelector(), // 페이지 인디케이터 도트 표시
],
),
),
),
);
}
}
이 예제에서는 길이가 3인 DefaultTabController
를 생성하여 세 개의 탭을 가지도록 설정합니다. Column
내부에 TabBar
를 배치하여 탭 라벨을 표시합니다. 그리고 TabBarView
를 사용하여 각 탭의 내용을 보여주고, TabPageSelector
를 통해 탭을 시각적으로 표시합니다.
필요에 따라 이 위젯들의 외관과 동작을 더욱 자세히 커스터마이징할 수 있습니다.
반응형