[플러터] TabBar 만들기

2021. 8. 28. 00:47·Flutter/Flutter Widget Basic

Tabbar를 만드는 방법에도 여러가지가 있다.

AppBar와 함께 만들 수 있고 TabBar와 TabBarView 위젯으로도 만들 수 있다.

후자의 방법에 대해 알아보자.

 

TabBar & TabBarView

class _LibraryPageState extends State<LibraryPage>
    with SingleTickerProviderStateMixin {
    //클래스에 with 해준다.
    ...
    }

사용하고자하는 클래스에 TickerProvider를 with 해준다.

간단하게 Animation의 Sync를 맞춰준다고 생각하면 된다.

 

//선언부터 한다
TabController? _tabController;
  
  @override
  initState(){
  //정의는 initState 이후에 한다
  	_tabController = new TabController(vsync: this, length: tabNames.length);
  }

여기서 vsync는 앞서 with한 클래스이다.

이 때문에 선언과 정의를 한번에 할 수 없으니 initState에서 정의한다.

 

TabBar(
		//디자인과 관련된 속성들
        indicatorWeight: 4.h,
        indicatorSize: TabBarIndicatorSize.label,
        indicatorColor: seletecColor,
        unselectedLabelColor: Color(0xFFDDDDDD),
        labelColor: seletecColor,
        unselectedLabelStyle: TextStyle(color: unseletecColor, fontSize: 15.sp),
        labelStyle: TextStyle(
            color: seletecColor, fontSize: 23.sp, fontWeight: FontWeight.bold),

        onTap: (int i){
        	..//tab 전환시 동작할 함수
        },
        isScrollable: true, //tab이 스크롤이 되는지
        
        controller: controller,
        tabs: [
        //tab들의 속성
        	Tab(...), Tab(...) ....
        ]);

TabBar 위젯을 생성한다. tabs에 Tab들을 삽입한다.

 

TabBarView(
children: bodyWidgets, //List<Widget>
controller: _tabController!,
),

마지막으로 TabBarView에 원하는 View를 삽입해주면 된다.

controller가 관련된 동작을 모두 수행해주기에 index를 별도로 제어해주지 않아도 된다.

 

Lingory에 적용된 TabBarView

 

저작자표시 비영리 변경금지

'Flutter > Flutter Widget Basic' 카테고리의 다른 글

[플러터] 위젯에 클릭 이벤트 부여하기 (Inkwell, GestureDetector)  (1) 2021.07.31
[플러터] Toast 메시지 (Snack bar) 생성하기  (0) 2021.01.07
[플러터] onClick 속성이 가능한 Text 위젯  (0) 2020.11.21
[플러터] bottom Navigation을 구현하는 3가지 방법  (0) 2020.09.28
[플러터] Inkwell의 이펙트 제거  (0) 2020.09.24
'Flutter/Flutter Widget Basic' 카테고리의 다른 글
  • [플러터] 위젯에 클릭 이벤트 부여하기 (Inkwell, GestureDetector)
  • [플러터] Toast 메시지 (Snack bar) 생성하기
  • [플러터] onClick 속성이 가능한 Text 위젯
  • [플러터] bottom Navigation을 구현하는 3가지 방법
코딩으로세계정복
코딩으로세계정복
Connecting the dots
  • 코딩으로세계정복
    코딩으로 세계정복
    코딩으로세계정복
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    웹
    프로그래머스
    포트폴리오
    탐욕법
    JavaScript
    플러터 웹
    DART
    map
    HTML
    리액트
    useRef
    자바스크립트
    Python
    react
    알고리즘
    Flutter
    DP
    useTranslation
    github
    링고리
    Firebase
    TypeScript
    파이썬
    CSS
    Redux
    플러터
    Lingory
    JSON
    flutter web
    useState
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩으로세계정복
[플러터] TabBar 만들기
상단으로

티스토리툴바