inblog logo
|
jjack1
    Flutter

    [Flutter] Context

    만들면서 배우는 플러터 앱 프로그래밍
    최재원's avatar
    최재원
    Jul 30, 2025
    [Flutter] Context
    Contents
    컨텍스트란?✅ 한 줄 정의✅ 왜 중요한가?✅ 사용 예시✅ 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'); }
    • 이 context는 Text 위젯이 어느 위치에서 빌드되는지를 나타냅니다.
    • 이 context로부터 위로 올라가면서 필요한 위젯을 탐색할 수 있습니다 (예: Theme, Scaffold, InheritedWidget 등).

    ✅ 주의할 점

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

    ✅ 결론 요약

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

    jjack1

    RSS·Powered by Inblog