[Dev log] Flutter BottomBar Item 레퍼런스 코드

이건우·2024년 1월 25일
0

Flutter 개발

목록 보기
5/5
`import 'package:flutter/material.dart';`

   Widget bottomNavigationBarWidget() {
    return BottomNavigationBar(
      // 애니메이션 고정. 고정하지 않는다면 아이콘이 커진다. 
      type: BottomNavigationBarType.fixed,
      onTap: (int index) {
        print(index);
        setState(() {
          selectedIndex = index;
        });
      },
      selectedFontSize: 12,
      selectedItemColor: Colors.black,
      selectedLabelStyle: TextStyle(color: Colors.black),
      items: [
        bottomNavigationBarItem("home", "소통"),
        bottomNavigationBarItem("search", "검색"),
        bottomNavigationBarItem("chat", "채팅"),
        bottomNavigationBarItem("my", "마이"),
      ],
    );
  }

// 위에서 아이콘 이름에 해당하는 "home_off.svg","search_off.svg","chat_off.svg"에 해당하는 것을 파라메터로 받아 아래에 적용해준다.
  BottomNavigationBarItem bottomNavigationBarItem(
      String iconName, String label) {
    return BottomNavigationBarItem(
      icon: Padding(
        // 아이콘과 명칭이름 서로 간격을 띄어주는 역할을 함
        padding: const EdgeInsets.only(bottom: 3),
        child: SvgPicture.asset(
          'assets/icons/${iconName}_off.svg',
          width: 22,
        ),
      ),
      label: label,
    );
    // 클릭하면 다른 아이콘으로 변환 _on.svg가 있다면
    activeIcon: Padding(
        // 아이콘과 명칭이름 서로 간격을 띄어주는 역할을 함
        padding: const EdgeInsets.only(bottom: 3),
        child: SvgPicture.asset(
          'assets/icons/${iconName}_on.svg',
          width: 22,
        ),
      ),
      label: label,
  }
  
    Widget build(BuildContext context) {
    return Scaffold(
      appBar: ...
      body: ...
      bottomNavigationBar: bottomNavigationBarWidget(),
    );
  }
      

BottomNavigationBarItem을 제네릭으로만 생각하였으나,

import 'package:flutter/material.dart'; 에 선언된 클래스중 하나였다.

그외, svg는 물감으로 된 아이콘들을 보통 쓴다.
사진같은 이미지는 png로..

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글