본문 바로가기
Flutter

BuildContext 이해하기

by 코코형아 2023. 6. 2.

BuildContext

정의 1. widget tree에서 현재 widget의 위치를 알 수 있는 정보

정의 2. 모든 위젯은 자신만의 BuildContext를 가지고 있고, 이 BuildContext는 stateless위젯이나 state위젯의 빌드 메서드에 의해서 리턴 된 위젯의 부모가 된다.

 

모든 위젯은 함수를 가지고 있고, 이를 통해 계층 구조를 만들어 나간다.

출처 - 코딩셰프

 

 

1. build란 함수명 앞에 Widget은 타입이다. 즉, build 메소드는 Widget 타입

2. 인자값은 BuildContext라는 타입의 context라는 인자값이다.

3. build함수는 context라는 인자값을 대입한 MaterialApp(Scaffold)이라는 위젯을 return 한다.

 

 

문제발생

Scaffold위젯이 존재하고 있으니 현재 Scaffold 위젯이 위젯트리상에서 어디에 위치하고 있는지 알기 위해서,

Scaffold위젯이 가지고 있는 context를 참조하는 것이 상식적으로 마땅.

하지만 정작 Scaffold 위젯의 context는 위젯트리 내에서 Scaffold가 어디에 위치하고 있는지에 대한 정보를 전혀 가지고 있지 않기 때문 -> 에러발생

 

어떻게 해결해야 할까?

build method에 의해 리턴된 Scaffold 위젯은 그 부모의 BuildContext 타입의 context를 물려 받는다.

Scaffold 위젯 밑에서 build 메소드로 무언가 위젯을 리턴하면 그 위젯은 부모의 Scaffold위젯의 진짜 context를 물려 받을 수 있다.

출처 - 코딩셰프

 

'Flutter' 카테고리의 다른 글

여러가지 위젯(Widget)  (0) 2023.06.12
Appbar(앱 바) & Drawer(드로어)  (0) 2023.06.01
vscode 오류 해결  (0) 2023.05.23
JIT vs AOT  (0) 2023.04.03