"내가 위젯 트리의 어디에 있는지"를 나타내는 context와, "특정 지점을 어디서든 붙잡는" GlobalKey. (일반 개념)
build 메서드가 받는 context는 **"이 위젯이 위젯 트리에서 서 있는 위치"**를 가리킨다. 이걸로 상위의 정보(테마, 라우터, 미디어쿼리)를 찾아간다.
Theme.of(context) // 가장 가까운 테마 찾기
context.go("/home") // 라우터 찾아 이동
MediaQuery.of(context) // 화면 크기 정보
React의 Context API와 이름은 비슷하지만, 여긴 "트리에서 위로 올라가며 찾는" 탐색 기능에 가깝다.
비동기 작업 뒤에 위젯이 사라졌으면 context도 무효해진다. 그래서 await 뒤에는 if (!context.mounted) return; 혹은 if (!mounted) return; 가드를 둔다.
보통 위젯은 build 안에서만 context를 쓰지만, 화면 밖(예: 푸시 핸들러, 전역 함수)에서도 특정 지점을 조작해야 할 때 GlobalKey를 쓴다.
final globalKey = GlobalKey<ScaffoldState>();
// ...
Scaffold(key: globalKey) // 지점에 손잡이 부착
globalKey.currentContext // 나중에 어디서든 그 context 꺼내 쓰기
예: 전역 팝업을 화면 밖에서 띄우기, 백그라운드 이벤트로 화면 이동하기. 많이 쓰면 전역 의존이 늘어 주의가 필요한 도구다.