inblog logo
|
하쎄의 기술 일기장
    Flutter

    [Flutter] GridView와 TabBar 이해하기(프로필앱)

    6. GridView와 TabBar 이해하기(프로필앱)
    하세연's avatar
    하세연
    Oct 02, 2024
    [Flutter] GridView와 TabBar 이해하기(프로필앱)
    Contents
    GridView의 기능TabBar의 기능GridView와 TabBar 예시(프로필 앱)

    GridView의 기능

    GridView는 Flutter에서 격자형(그리드) 레이아웃을 구현할 수 있도록 해주는 위젯입니다. 화면을 행과 열로 나누어 여러 개의 아이템을 배치할 때 사용됩니다. 예를 들어, 사진 갤러리, 상품 목록, 카드형 UI 등 여러 콘텐츠를 격자 모양으로 배치할 때 유용합니다.

    GridView의 주요 특징

    • 스크롤 가능: 스크롤 가능한 그리드 레이아웃을 쉽게 구현할 수 있습니다.
    • 자동 크기 조정: 화면 크기에 따라 아이템의 배치가 자동으로 조정되며, 유동적인 그리드 레이아웃을 생성할 수 있습니다.
    • 다양한 그리드 레이아웃 옵션: GridView.count, GridView.extent 등 다양한 레이아웃 옵션을 제공합니다.

    TabBar의 기능

    TabBar는 Flutter에서 여러 화면을 탭(Tab)으로 나누어 쉽게 전환할 수 있도록 해주는 위젯입니다. 일반적으로 탭 메뉴와 탭의 내용을 함께 사용하여 UI를 구성하며, 탭을 눌러 각기 다른 화면이나 내용을 쉽게 전환할 수 있습니다.

    TabBar의 주요 구성 요소

    1. TabController:
        • TabBar와 TabBarView를 연결하고, 탭을 전환할 때 상태를 관리하는 컨트롤러입니다.
        • 탭을 눌렀을 때 어떤 탭이 활성화되는지를 관리합니다.
        • 보통 StatefulWidget에서 SingleTickerProviderStateMixin을 사용하여 TabController를 생성합니다.
    1. TabBar:
        • 탭 메뉴를 표시하는 위젯입니다. 탭은 보통 Tab 위젯을 사용하여 정의됩니다.
        • 각 탭은 텍스트, 아이콘 또는 둘 다 포함할 수 있습니다.
    1. TabBarView:
        • 탭에 대응하는 내용을 표시하는 위젯입니다.
        • TabBar에서 선택된 탭에 따라 TabBarView의 페이지가 전환됩니다.
     

    GridView와 TabBar 예시(프로필 앱)

    notion image
    notion image
    DefaultTabController( length: 2, // 탭의 개수 child: Column( children: [ TabBar( tabs: [ // 나타낼 탭 Tab(icon: Icon(Icons.accessibility_new_outlined)), Tab(icon: Icon(Icons.account_circle_sharp)), ], ), Expanded( child: TabBarView( // 탭에 나타날 뷰 children: [ GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 한 줄에 카운트될 개수 crossAxisSpacing: 5, // 가로 방향으로 공간띄우기 mainAxisSpacing: 5, // 세로 방향으로 공간띄우기 ), itemBuilder: (context, index) => SizedBox( // 채워질 item height: 200, child: Image.network( "https://picsum.photos/id/${200 + index}/200/300", fit: BoxFit.cover, ), ), itemCount: size, physics: NeverScrollableScrollPhysics(), ), Container(color: Colors.red), ], ), ), ], ),
    해당 코딩을 통해 하나는 그리드를 담을 탭과 하나는 빨간색 여백의 탭을 나타낸다.
    physics: NeverScrollableScrollPhysics(), 를 사용해서 스크롤에 대한 제어를 한다.
    만약 해당 코드가 없다면 일정 영역을 넘어가 그리드 화면만 나오게 된다면 스크롤이 되지 않는 부분이 수정된다.
    Share article

    하쎄의 기술 일기장

    RSS·Powered by Inblog