[플러터 개발] BottomNavigationBar 직접 만들어보기

2023. 11. 9. 15:13·플러터/플러터 개발
반응형

안녕하세요. 오늘은 BottomNavigationBar를 커스텀하는 걸 배워보겠습니다.

플러터에는 BottomNavigationBar라는 클래스가 있습니다. 하지만 오늘은 기존 클래스를 사용하지 않고 Container와 TabBar를 이용해 직접  바텀바를 만들어보려고 합니다.

그렇다면, "왜 기존에 있는 클래스를 사용하지 않고 직접 BottomBar를 만들어야할까?" 라는 생각이 드실 수도 있습니다. BottomBar를 직접 TabBar로 구현하는 이유는 조금 더 다양하게 커스터마이징하기 위해서 직접 구현하는 겁니다. 나중에 외주를 받거나, 혹은 특별한 경우에는 BottomBar에 더 많은 기능과 디자인을 요구하는 경우가 있습니다. 그렇기 때문에 BottomBar를 직접 구현하는 방법도 알아야 합니다!

저는 실제로 개발을 할때, 이렇게 직접 구현하는 경우가 많았습니다!

그럼 이제 실제로 만들어보며 배워보겠습니다.

bottom_bar.dart (Widget)

실제 바텀바를 꾸미는 코드입니다.

import 'package:flutter/material.dart';

class BottomBar extends StatelessWidget {
  const BottomBar({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.only(bottom: 10, top: 5),
      height: 88, //BottomBar의 높이
      decoration: BoxDecoration(
        color: Colors.white, //BottomBar 색상
        boxShadow: [BoxShadow(blurRadius: 1, color: Colors.grey)], //BottomBar와 화면을 구분하는 그림자
      ),
      child: TabBar(
        tabs: [
          //BottomBar 아이콘 리스트 (페이지와 똑같은 순서로)
          Tab(icon: Icon(Icons.home, size: 28), text: '홈'),
          Tab(icon: Icon(Icons.account_balance_wallet, size: 28), text: '내 지갑'),
          Tab(icon: Icon(Icons.settings, size: 28), text: '설정'),
        ],
        labelColor: Color(0xffFF4156), //선택된 메뉴 색상
        unselectedLabelColor: Colors.grey, //선택되지 않은 메뉴 색상
        labelStyle: TextStyle(fontSize: 16), //메뉴 글씨 스타일 설정
        indicatorColor: Colors.transparent, //인디케이터 없애기
      ),
    );
  }
}

 

bottom_bar_screen.dart (screen)

바텀바 위젯을 가져와서 배치하고, 연결되는 페이지들을 설정하는 화면입니다. 실제로 바텀바가 있는 메뉴화면으로 들어가기 위해서는 이 화면으로 이동하면 됩니다.

import 'package:flutter/material.dart';

import 'bottom_bar.dart';

class BottomBarScreen extends StatelessWidget {
  const BottomBarScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: 3, //페이지 수
      child: Scaffold(
        body: TabBarView(
          physics: NeverScrollableScrollPhysics(),
          children: [
            //페이지 리스트
            SafeArea(child: Text('마이 스크린1', style: TextStyle(fontSize: 40))),
            SafeArea(child: Text('마이 스크린2', style: TextStyle(fontSize: 40))),
            SafeArea(child: Text('마이 스크린3', style: TextStyle(fontSize: 40))),
          ],
        ),
        bottomNavigationBar: BottomBar(), // 커스텀 바텀바
      ),
    );
  }
}

결과물

 

오늘은 Custom BottomNavigationBar를 만들어 보았습니다!

담에도 유익한 정보로 찾아 뵙겠습니다!

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'플러터/플러터 개발' 카테고리의 다른 글
  • [플러터 개발] Lottie 패키지를 이용한 애니메이션 추가하기
  • [플러터 개발] 카카오톡 로그인 구현하기
  • [플러터 개발] SHA 키 해시 확인하기
  • [플러터 개발] IOS, 안드로이드 앱 폰트 바꾸기
서진형(Harvie)
서진형(Harvie)
🚀 1인 개발과 1인 창업의 모든 것! 실전 경험을 바탕으로 기술, 비즈니스, 그리고 성장의 과정까지 담아내는 블로그. 배운 것, 부딪힌 것, 그리고 그 속에서 얻은 인사이트를 공유합니다.
  • 서진형(Harvie)
    Harvie의 개발로 창업하기
    서진형(Harvie)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 하비의 이야기
      • 플러터
        • 플러터 개발
        • 플러터 개념
        • 플러터 기초
      • 코틀린
        • 컴포즈
      • 파이썬
        • 파이썬 심화
        • 파이썬 기초
      • 컴퓨터공학
        • 소프트웨어
        • 클라우드 서비스
      • 정보 공유
        • 행사 소개
        • 꿀팁 공유
      • 문제 해결
      • 깃허브
      • 개발한 서비스
  • 블로그 메뉴

    • Harive's Portfolio
    • 에어컨 서비스 예약하기
  • 링크

    • Instagram
    • 코너(CONER) 블로그
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
서진형(Harvie)
[플러터 개발] BottomNavigationBar 직접 만들어보기
상단으로

티스토리툴바