[Flutter] 12. 쇼핑카트 앱 만들기 (1) - 레이아웃

김주희's avatar
Jun 08, 2025
[Flutter] 12. 쇼핑카트 앱 만들기 (1) - 레이아웃
bottom sheet 위젯
 
 
전체 페이지의 구조?흐름?이 column이니 placeholder → column
notion image
 

사진 연결

notion image
 

앱바 만들기

notion image
 
A→ B화면으로 갈 때 B화면에 앱바가 있으면 뒤로가기 자동으로 생김
다른화면에서 그 화면으로 들어갈때 자동으로 ← 생기고 navigator.pop 으로 뒤로가짐
 

앱바 메서드로 추출하기

웹과 달리 핸드폰 기준 페이지마다 다 달라서? 페이지마다 만드는게 낫다. → 그러므로 위젯이 아니라 메서드로 추출
notion image
 

이미지 비율 주기

notion image
 

(이미지 + 버튼) 세트의 버튼 만들기

notion image
 

버튼 위젯 → component로 분리

notion image
 

버튼 위치 잡기

spaceEvenly : 띄어쓰기가 동일하다 spaceAround : 나중에 padding을 줄거라서 양옆이 줄어들거라 spaceAround을 사용한다
notion image
 

이미지+버튼 세트 component로 분리하기

notion image
 

하얀색 박스 만들기

흰색은 안보이니까 일단 노란색으로 설정
Container에 color로 색 지정하고 박스 꾸미려고 decoration쓰면 에러 터진다. 그래서 색상이랑 꾸미기 다 하려면 decoration에서 설정해야한다.
notion image
 
상단의 모서리에만 곡선 주기
notion image
 

흰색 박스 내부 레이아웃 잡기

notion image
 

왼쪽 정렬

Row~Row까지를 column으로 묶어서 왼쪽정렬
근데 이제 묶어서 Start, 원래Column은 Center로 잡거나
원래 Column을 Start로 잡고 버튼을 Row로 묶어서 가운데 정렬하거나
 
notion image
 
align 박스는 double.infinity로 자리 전부 차지한다.
버튼은 align으로 wrap해서 가운데 정렬한다.
notion image
 

흰 박스 내부 만들기(1)

spaceBetween으로 양옆으로 찢어준다.
notion image
 

흰 박스 내부 만들기(2)

TextSpan : 옆으로 흘러가는 텍스트 여러개를 만들 때 쓴다.
notion image
notion image
 
Spacer로 찢어주기
Spacer : 남는 자리 전부 차지
notion image
 
위의 텍스트도 그냥 spaceBetween 말고 Spacer로 통일
notion image
 

흰 박스 내부 만들기(3) - 색상 선택 그림

notion image
 
흰색 동그라미를 테두리로 검은색 동그라미 있으므로 Container 안에 Container
근데 분명 크기를 흰색 동그라미보다 작게 했는데 적용 안되는 문제 발생!
notion image
notion image
 

Stack으로 Container 제약조건 문제 해결하기

흰 원 도화지 위에 검은 원 도화지를 쌓을 거야 → Stack으로
Stack은 Postioned과 쌍이다.
Absolute postition?과 비슷
 
Positioned: 위치를 잡아준다. → 위의 부모에게 종속되어있다.
notion image
 
부모 기준으로 자리를 top, left 등으로 잡아준다.
notion image
 

Stack 위젯 → Component로 분리하기

notion image
notion image
 

ColorIcon 사이 띄우기

Padding 위젯 : CSS와 다르게 내부가 아니라 외부에 박스가 있고 그 박스와 아이템 사이에 여백이 생기는 것
padding영역 = inset 영역 = 그림을 그릴 수 없는 영역
 
colorIcon을 모듈화 해서 여백을 주고싶은 경우에만 줄 수 잇도록 선택적 매개변수로 설정
notion image
notion image
 

버튼 만들기

SizedBox 로 설정 가능
notion image
 
근데 다른 방법으로 할거예용
 
이 방법으로는 안됨 ㅠㅠ
notion image
 
최솟값이 정해져있으면 최대가 double.infinity여도 최소에 double.infinity가 맞춰짐
double w = MediaQuery.of(context).size.width 이런식으로 화면 사이즈 변수로 받아오면 그걸로 설정 → 반응형으로 사용 가능
 
디바이스의 크기가 너무 다양해서 플러터 스크린 유틸리티라는 라이브러리를 쓰면 화면과 글꼴을 조절하는 플러터 플러그인으로 화면에 맞춰서 조절가능 → 근데 내가 일단 직접 해봐야 이해하고 할 수 있음
 

전체 위치 조정

 
이미지 모서리 자르기
notion image
 
헤더의 양옆 여백
notion image
 
헤더 내부 버튼 여백
notion image
 
흰 박스 내부 여백
notion image
 
흰박스 아이템들 사이 여백
notion image
 

흰 박스 위젯 → Component로 분리하기

notion image
notion image
 
Share article

jay0628