inblog logo
|
jay0628
    Flutter

    [Flutter] 8. 프로필 앱 만들기

    김주희's avatar
    김주희
    Jun 08, 2025
    [Flutter] 8. 프로필 앱 만들기
    Contents
    화면 구조초기 세팅AppBarBody

    화면 구조

     
     

    초기 세팅

    프로젝트 main 세팅

    fst 자동완성
    notion image
    notion image
     

    TabBar 샘플링 가져오기

    TabBar 위젯을 처음 보고 샘플링하여 TabBar를 AppBar 자리가 아닌 Body 쪽으로 위치를 내리는 연습하였다. TabBar를 샘플링하여 연습한 결과물과 지금 만들고자 하는 프로필 앱의 구조와 유사하므로 샘플링 코드의 Expanded 이하를 가져와서 Scaffold의 body를 차지하던 Placeholder()를 지우고 Column으로 바꾼 뒤 Column의 자식으로 Expanded 이하의 코드를 붙여넣는다.
    notion image
    TabBar 샘플링 결과물
    notion image
    만들고자 하는 프로필 앱
     
    notion image
     

    DefaultTabController 위젯으로 추출하기

    notion image
    notion image
     

    AppBar

    AppBar - leading

    아이콘 형태의 버튼을 만들기 위해서 IconButton 위젯을 사용한다. IconButton은 onPressed와 icon을 필수 매개변수로 받는다. onPressed는 return이 없는 lambda expression로 버튼 클릭하면 무엇을 하고 싶은지에 대한 행위이고 icon은 버튼의 아이콘을 지정하는 매개변수이다.
    notion image
     

    AppBar - title

    iOS에서는 title이 가운데, 안드로이드에서는 왼쪽 자동 정렬된다. 안드로이드에서도 title을 가운데 정렬하고 싶다면 centerTitle 속성을 통해 직접 가운데 정렬 설정 가능하다.
    notion image
     

    AppBar - actions → Drawer

    오른쪽의 햄버거 버튼의 경우 AppBar 뿐만 아니라 Scaffold가 제어해서 전역적으로 써야하므로 AppBar에서 actions로 관리하지 않고 Scaffold의 endDrawer 속성을 사용한다. Drawer는 화면의 왼쪽 끝에서 슬라이드 되어 나타나는 사이드 메뉴를 설정하는 속성으로 endDrawer는 화면의 오른쪽 끝, Drawer는 화면의 왼쪽 끝 지점에서 슬라이드 되어 나타난다. Container 위젯을 통해 폭과 색상을 지정하지 않을 경우 transparent 상태로 배경색은 아예 없고, 폭은 Drawer의 폭과 일치한다.
    색상, 폭 설정 전
    notion image
    색상, 폭 설정 후
    notion image
     

    Container 위젯으로 추출하기 + component로 분리하기

    notion image
    notion image
     

    AppBar 메서드로 추출하기

    AppBar는 앱마다 다 다를수 밖에 없어서 위젯이 아닌 메서드로 추출한다.
    메서드 추출 단축키 Ctrl + Alt + M
    notion image
     

    Body

    프로필 이미지 + 이름 + 소개 → Row

    Row 안에 프로필 이미지 + (이름+소개)가 들어가는데 이때 이름과 소개는 다시 Column 안의 자식으로 들어간다. 그리고 Column 기준 반대축인 왼쪽으로 텍스트를 정렬한다.
    notion image
    notion image
    notion image
     

    CircleAvatar 원 안에 이미지 넣기

    notion image
     

    CircleAvatar 사이즈 조절

    1. radius
      1. notion image
    1. SizedBox → 사이즈 속성이 없는 위젯의 경우 SizedBox 사용
      1. notion image
     

    Row(프로필 이미지 + 이름 + 소개) 위젯으로 추출하기 (MHeader) → Component

    notion image
    notion image
     

    텍스트 + 텍스트 + 텍스트 → Row

    notion image
     

    Column (텍스트 + 텍스트) * 3 + Container * 2

    Row 내부에 텍스트 두개가 Column으로 들어간다. 그리고 이렇게 만들어진 Column을 구분짓는 선은 Container로 만든다.
    Row의 메인축을 기준으로 spaceAround를 통해 자식 위젯들 사이에 동일한 간격을 두고, 시작과 끝에도 같은 간격의 절반을 배치한다.
    notion image
     

    Row 위젯으로 추출하기 + Component

    notion image
    notion image
     

    Button 만들기

    notion image
    notion image
     
    Share article

    jay0628

    RSS·Powered by Inblog