모든 위젯은 자신의 context를 가지고 있습니다.

build메소드에 들어가는 context가 이 context입니다.

builder: (context) {} 처럼 빌더메서드에 context를 전달하는 이유도 해당 위젯에 context가 필요하기 때문입니다.

context는 엘리먼트 트리에서 위젯의 엘리먼트가 됩니다. 위젯에 대한 메타데이터로 위젯에 대한 정보와 위젯트리에서 위젯의 위치를 가지고 있습니다.

그래서 context는 내부적으로 Flutter가 이 위젯이 어디에 속해 있는지를 이해하는데 사용되고, 모든 위젯의 모든 컨텍스트(엘리먼트 트리의 엘리먼트)

모든 위젯의 모든 컨텍스트는 서로를 알 수 있고, 서로가 어떤 위젯에 연관이 되어 있는지, 그리고 어떻게 속해있는지를 알 수 있다.

이렇게 컨텍스트들은 위젯트리의 뼈대를 이루게 된다. 모든 컨텍스트들은 서로를 알고 있기 때문에 컨텍스트는 위젯트리에서 하나의 소통 채널이 된다고 볼 수 있다.

플러터는 위젯 사이에서 데이터를 전달하기 위해 이면에 컨텍스트라는 효율적인 상호작용 채널을 가지고 있는 셈이다.

위젯 사이의 데이터 전달은 주로 생성자를 통해 이루어진다.

참고자료

Element - Context

widget-and-element-tree.pdf

context.pdf