"내가 위젯 트리의 어디에 있는지"를 나타내는 context와, "특정 지점을 어디서든 붙잡는" GlobalKey. (일반 개념)

BuildContext란

build 메서드가 받는 context는 **"이 위젯이 위젯 트리에서 서 있는 위치"**를 가리킨다. 이걸로 상위의 정보(테마, 라우터, 미디어쿼리)를 찾아간다.

Theme.of(context)        // 가장 가까운 테마 찾기
context.go("/home")      // 라우터 찾아 이동
MediaQuery.of(context)   // 화면 크기 정보

React의 Context API와 이름은 비슷하지만, 여긴 "트리에서 위로 올라가며 찾는" 탐색 기능에 가깝다.

주의: context가 사라질 수 있다

비동기 작업 뒤에 위젯이 사라졌으면 context도 무효해진다. 그래서 await 뒤에는 if (!context.mounted) return; 혹은 if (!mounted) return; 가드를 둔다.

GlobalKey — 어디서든 붙잡는 손잡이

보통 위젯은 build 안에서만 context를 쓰지만, 화면 밖(예: 푸시 핸들러, 전역 함수)에서도 특정 지점을 조작해야 할 때 GlobalKey를 쓴다.

final globalKey = GlobalKey<ScaffoldState>();
// ...
Scaffold(key: globalKey)               // 지점에 손잡이 부착
globalKey.currentContext               // 나중에 어디서든 그 context 꺼내 쓰기

예: 전역 팝업을 화면 밖에서 띄우기, 백그라운드 이벤트로 화면 이동하기. 많이 쓰면 전역 의존이 늘어 주의가 필요한 도구다.