1. BuildContext

BuildContext내용을 알기 위해서는 Widget의 구조를 알아야 한다.

위 사진과 같이 모든 플러터 위젯은 한 가지 이상의 하위 위젯을 가질 수 있고, 모두 트리의 노드가 된다.

모든 플러터 위젯은 BuildContext 인수(매개변수)가 포함된 @override build() 메소드를 가지고 있다.

class StudyBuildContext extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
  // ...
}

BuildContxt를 간단히 설명하자면

  1. 위젯 트리에서 위젯의 위치를 알 수 있는 정보이다.
  2. 중첩되어 감싸진 위젯의 위젯이다.
  3. 플러터에서는 최종 Build.call()까지 모든것이 위젯이다.

여기에서 이해 해야할 중요개념은

  1. 모든 위젯은 고유의 build() 메소드와 context를 가지고 있다.
  2. BuildContext는 build() 메소드에 의해 리턴된 위젯의 부모다.
  3. 위젯의 build() 메소드를 호출하는 위젯의BuildContextbuild()를 통해 리턴되는 위젯의 BuildContext는 동일하지 않다.