[Flutter] Stack, EdgeInsets, BuildContext 개념 및 활용하기

2023. 2. 19. 13:00·Flutter
목차
  1. 1. Stack
  2. Postioned
  3. 2. EdgeInsets
  4. EdgeInsets.all()
  5. EdgeInsets.only()
  6. EdgeInsets.fromLTRB
  7. EdgeInsets.symmetric(vertical: 8.0)
  8. 3. Buildcontext
  9. 🔗 참고
728x90
반응형

1. Stack

: stack는 자료구조에서 많이 보인다. 기본적으로 push와 pop을 사용한다.

flutter에서 stack은 화면 위에 위젯을 표시하는 방식으로 화면에서 이동한다. 화면 위에서 위젯을 표시할 때 push를, 위에 표시된 화면을 제거할 때에는 pop을 사용한다.

Stack의 자식 위젯 위치를 조절하는데 쓰인다.

Postioned

Positioned 위젯은 Stack안에서 사용되어야 하며, StatelessWidget과 StatefulWidget에서만 사용가능하다.

그런데 여기서 positioned를 사용하여 top, left, right, bottom을 이용해서 자식들을 배치할 수 있다. 내가 하면서 제일 먼저 생성한 자식위젯은 맨 아래에 쌓인다. 그리고 제일 나중에 생성한 위젯은 제일 위에 배치된다. 웹으로 보면 z-index를 사용한 것처럼 보인다.

하면서 생긴 의문

top 옵션을 주지 않았을 때
top 옵션을 주지 않았을 때

검은색으로 생성한 박스위젯은 제일 나중에 생성된 박스위젯이다. 그런데 제일 나중에 생성되었음에도 불구하고 파란색 위젯에서 벗어나지 못했다. 그래서 잘 몰라서 헤매니, 검은색 위젯에 top옵션을 주었는데 파란색 위젯에는 top옵션을 안 주었기에 그렇게 되었다. 그리고 나서 파란색 박스위젯에 top옵션을 주니 stack이 쌓였다.

top 옵션을 주었을 때
top 옵션을 주었을 때

2. EdgeInsets

padding,margin과 같이 크기 조정할때 자주 사용하는 클래스이다.

EdgeInsets.all()

전체여백을 지정하는 옵션

EdgeInsets**.**all**(**8.0**)**

EdgeInsets.only()

특정영역에만 여백을 지정하고 싶을때 사용

EdgeInsets**.**only**(**bottom: 5**)**
EdgeInsets.only(left: 40.0)

EdgeInsets.fromLTRB

왼쪽,위,오른쪽,밑 순으로 지정이 가능

EdgeInsets**.**fromLTRB**(**4**,** 0**,** 4**,** 0**),**

EdgeInsets.symmetric(vertical: 8.0)

symmetric은 ’대칭적인’이라는 의미로 수평(horizontal), 수직(vertical)을 기준으로 여백지정이 가능하다.

  • 수직(vertical) : 위,아래
  • 수평(horizontal) : 왼쪽,오른쪽

3. Buildcontext

1) 첫번째 정의

Flutter 공식 문서를 통해 정의를 살펴보면

A handle to the location of a widget in the widget tree. 위젯 트리에서 위젯의 위치를 다루는 것.

Widget build(BuildContext context){
  // example ...
  return Scaffold(...) <- widget
}

build method가 Scaffold Widget을 리턴할 때 위젯 트리상에서 어디에 위치하는가에 대한 정보를 가지고 있는 context라는 것을 넣어서 리턴해준다는 의미이다.

2) 두번째 정의

build method 의 타입은 Widget이고 인자 값으로 BuildContext를 가진다.

build 메소드를 통해서 위젯을 반환하고 그 안에 buildcontext를 집어넣는다.

Each widget has its own BuildContext, which becomes the parent of the widget returned by the StatelessWidget.build or State.build function 모든 위젯은 자신만의 BuildContext를 가지고 있고, 그것은 StatelessWidget.build or State.build에 의해 반환되는 위젯의 부모가 된다.

Widget build(BuildContext context){
  // example ...
  return Scaffold(...) <- widget
}

build 메소드의 인자값에 있는 context는 return 되는 scaffold 의 부모의 context이다.

부모의 context에는 부모 위젯까지의 정보를 가진다.

🔗 참고

https://negabaro.github.io/archive/flutter-painting-EdgeInsets

https://velog.io/@sharveka_11/Flutter-2.-ListView

728x90
반응형
저작자표시 (새창열림)
  1. 1. Stack
  2. Postioned
  3. 2. EdgeInsets
  4. EdgeInsets.all()
  5. EdgeInsets.only()
  6. EdgeInsets.fromLTRB
  7. EdgeInsets.symmetric(vertical: 8.0)
  8. 3. Buildcontext
  9. 🔗 참고
'Flutter' 카테고리의 다른 글
  • [Flutter] SingleChildScrollView, GestureDetector, decoration, Align, datetime 개념 및 활용하기
  • [Flutter] final, generics, future에 대한 개념 적립하기
  • [Flutter] 터미널에서 플러터 인식못할 때 인식시키기
  • [Flutter] Flutter 시작할 때 알아야 되는 개념 알아보기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking의 it로그안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • error
  • React
  • 넥스트
  • 오블완
  • 장고
  • 리액트
  • SSR
  • useEffect
  • 쿠버네티스
  • Django
  • Express
  • NEXT
  • node.js
  • supabase
  • 노드
  • sequelize
  • docker
  • MySQL
  • 도커
  • 플러터
  • Vue.js
  • mosquitto
  • Kubernetes
  • AWS
  • 티스토리챌린지
  • next.js
  • Create
  • firebase
  • Props
  • flutter

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[Flutter] Stack, EdgeInsets, BuildContext 개념 및 활용하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.