Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 개발
- 명령어
- flutter
- command
- 유데미 러닝크루
- 리눅스
- ExpansionTile
- 다트
- 도서
- dart
- 플러터
- 프로그래밍
- 맥
- copyWIth
- Code Generation
- vscode
- riverpod
- 리버팟
- freezeD
- 유데미
- ListTile
- 가상환경
- 개발자
- 유데미 코리아
- 파이썬
- linux
- python
- 코딩
- 디자인패턴
- 책
Archives
- Today
- Total
승상의 코딩 블로그
[Flutter] 탭 사용하기 (TabBar, TabBarView) 본문
탭을 사용하면 위와 같이 각 정보간의 전환을 쉽게 할 수 있다.
정보가 유사하지만 다른 느낌이라면 둘로 나누는 것이 좋겠다고 생각했다.
그래서 장소에 대한 "객관적(화장실, 주차장)이거나 전체 통계(리뷰평점)에 대한 정보"와 "그 통계를 이루는 개인의 리뷰" 를 나누고자 했다.
구현
// Tab 을 사용하기 위해 TickerProviderStateMixin 를 믹스인해줌.
class _TabViewState extends State<TabView> with TickerProviderStateMixin {
// _tabConroller 를 사용할 때는 무조건 선언되어 있을 것이므로(initState에서 바로 선엄함)
// late 키워드 사용함.
late TabController _tabController;
@override
void initState() {
// 선택된 탭과 컨텐츠 섹션이 동기화를 TabController 가 수행해 줌.
_tabController = TabController(
length: 2, // 탭의 전체 길이
vsync: this, // TickerProvider 가 widget 을 다시 그리기 위한 파라미터임.
);
super.initState();
}
@override
Widget build(BuildContext context) {
return Column(
children: [
TabBar(
labelColor: Color(0xFF4EACF8), // 선택된 탭의 색상
unselectedLabelColor: Colors.black, // 선택되지 않은 택의 색상
controller: _tabController,
tabs: [
Container( // 탭의 크기를 위해 Container로 감쌈
child: Text("정보"), // 첫번째 페이지 Tab 의 타이틀
alignment: Alignment.center,
height: 40,
),
Container(
child: Text("리뷰"), // 첫번째 페이지 Tab 의 타이틀
alignment: Alignment.center,
height: 40,
),
],
),
Expanded( // 페이지가 Column 의 남은 공간을 모두 사용할 수 있도록 Expanded로 TabBarView 를 감쌉니다.
child: TabBarView(
controller: _tabController,
children: [
ServiceCard(), // Tab 의 첫번째 페이지
ReviewCards(), // Tab 의 두번째 페이지
],
),
),
],
);
}
}
반응형
'Flutter (플러터)' 카테고리의 다른 글
토큰 기능 테스트를 위한 간단한 Flask 서버 만들기 (0) | 2023.08.08 |
---|---|
[Flutter] Inkwell, 터치가능한 위젯으로 변경 (vs GestureDetector) (0) | 2023.08.06 |
[Flutter] SingleChildScrollView, 스크롤 가능한 위젯 (0) | 2023.08.06 |
[Flutter] 이미지 슬라이더 구현 (carousel slider) (0) | 2023.08.05 |
Flutter 도전기 (왜 플러터를 공부하려고 하는가?) (0) | 2023.08.05 |
Comments