[Flutter] Context

만들면서 배우는 플러터 앱 프로그래밍
최재원's avatar
Jul 30, 2025
[Flutter] Context

컨텍스트란?

💡

✅ 한 줄 정의

BuildContext는 위젯 트리에서 해당 위젯의 위치를 나타내는 핸들이다.

✅ 왜 중요한가?

Flutter는 모든 것이 위젯이고, 트리 구조로 구성되어 있습니다.
그 트리 속에서 어떤 위젯이 "자기 주변에 있는 위젯"을 참조하거나 기능을 수행하려면 context가 필요합니다.

✅ 사용 예시

상황
코드
설명
라우팅 (화면 전환)
Navigator.push(context, ...)
현재 위치에서 Navigator를 찾아서 사용
테마 접근
Theme.of(context).textTheme
부모 트리에서 Theme 정보를 가져옴
미디어쿼리
MediaQuery.of(context).size
디바이스 크기/방향 정보 가져옴
다이얼로그
showDialog(context: context, ...)
다이얼로그를 띄울 위치 지정

✅ context는 위젯의 생명주기와 연결

@override Widget build(BuildContext context) { return Text('Hello'); }
  • contextText 위젯이 어느 위치에서 빌드되는지를 나타냅니다.
  • 이 context로부터 위로 올라가면서 필요한 위젯을 탐색할 수 있습니다 (예: Theme, Scaffold, InheritedWidget 등).

✅ 주의할 점

  1. initState()에서는 context 사용하지 말기
      • 위젯이 아직 트리에 "올라가기 전"이므로 context로 위를 탐색하면 에러 납니다.
      • WidgetsBinding.instance.addPostFrameCallback 사용 필요.
  1. buildershowDialog 안의 context는 다른 context일 수 있음
      • 다이얼로그처럼 새로운 위젯 트리를 렌더링할 경우, context가 다를 수 있음 (앞서 설명한 내용 참고).

✅ 결론 요약

질문
답변
context란?
위젯 트리에서의 위치 정보 (BuildContext 객체)
왜 필요?
위로 올라가면서 Navigator, Theme, MediaQuery 등을 찾기 위해
어디서 주로 쓰임?
화면 전환, 테마 접근, 다이얼로그, 레이아웃 계산 등
주의할 점
initState()에서는 사용 불가, context가 어디의 context인지 항상 명확히 파악 필요
 
Share article

jjack1