BuildContext를 살짝 알아보기

 ・ 1 min

photo by Wolfgang Hasselmann on Unsplash

Flutter에선 어떤 위젯이든 build 메소드가 존재해요. build 메소드의 인자로는 항상 BuildContext 타입의 context 변수를 받고 있어요.
build 단계에서 context를 사용하면 구현해야 하는 build 메소드를 가진 위젯이 부모 위젯이나 부모 위쪽으로 있는 정보를 context를 통해 얻어 올 수 있어요.

ex) Provider.of(context), Theme.of(context), Scaffold.of(context), Navigator.of(context), MediaQuery.of(context) 등

찾고자 하는 위젯을 Widget tree라는 방식으로 tree 자료구조로 해당 위젯의 위치로부터 부모를 거슬러 순회하며 찾고자 하는 위젯을 검색해요.

build 함수가 실행이 끝나고 반환이 되면 그 위젯은 context에 등록이 될 것이고 그 이후부터 다른 위젯에서 찾을 수 있어요.

image

Flutter에서 위젯을 화면에 그리기 위해 처리되는 순서
Widget -> Element -> RenderObject -> Canvas

클래스에 Widget이라는 단어가 있거나 그런 이름을 가진 객체를 상속받으면 위젯 트리에서 구현돼요.
클래스에 Element이라는 단어가 있거나 그런 이름을 가진 객체를 상속받으면 엘리먼트 트리에서 구현돼요.
클래스에 RenderObject이라는 단어가 있거나 그런 이름을 가진 객체를 상속받으면 렌더 트리에서 구현돼요.

build 메소드가 호출되는 경우

  • initState를 호출한 후
  • didUpdateWidget을 호출한 후
  • setState가 호출된 후
  • State 객체가 변경된 이후
  • State 객체가 비활성화되고 트리 다른 위치로 다시 넣어진 후

Flutter 애니메이션 원리는 이 링크가 도움 될 거예요. Turing Apple & Flutter Seoul


To be of use to the world is the only way to be happy.

— Hans Christian Andersen


Other posts
cover_image
 ・ 6 min

Flutter 기능 개발 순서

cover_image
 ・ 1 min

아이폰에서 localhost 접근하기

cover_image
 ・ 8 min

Flutter 렌더링 오류 살펴보기