BuildContext.
Flutter 공식 문서에 따르면...https://api.flutter.dev/flutter/widgets/BuildContext-class.html
BuildContext class - widgets library - Dart API
A handle to the location of a widget in the widget tree. This class presents a set of methods that can be used from StatelessWidget.build methods and from methods on State objects. BuildContext objects are passed to WidgetBuilder functions (such as Statele
api.flutter.dev
아니다. 대충 읽어봤는데, 그냥 넘어가도 되겠더라.
context의 뜻은 '맥락', '문맥' 이런 뜻이라는 것을 알면 뭔가 감이 올지도 모르겠다.
일단 그렇다 치고 넘어가자.
BuildContext에 있는 'context'는 부모 요소들에 대한 정보가 들어가 있다.
BuildContext는 그러니까, 위젯 트리 안에서 위젯의 위치를 제공하고, 이를 통해서 상위 요소 데이터에 접근이 가능하다.
이제 내가 왜 context 뜻을 왜 언급했냐면.... 딱 '맥락'을 뜻하기 때문이다.
부모 요소들에 대한 정보들을 참고해서 '맥락에 맞게' 위젯을 변화한다고 이해하면 될 것 같다.
그래서, MaterialApp의 테마를 지정해주고, MyLargeTitle이라는 위젯으로 새로 만들어주면...
theme에서 textTheme를 설정한 모습니다.(titleLarge만 설정했다.)
이렇게 해주면 MaterialApp에 있는 테마를 MyLargeTitle에서 불러올 수 있다.
아래와 같이.
Theme.of(context).textTheme.titleLarge.color
이것을 이용해서 MaterialApp에서 설정한 테마를 가져온 것이다.
하지만, dart는 titleLarge가 null값이 될 수 있음을 걱정한다.
그래서 '!'를 붙여서 해결한다.('?'를 붙여서 해결할 수도 있다.)
- ! : null이 아니라고 강력하게 확신한다는 의미
- ? : null이 아니라면 사용하라는 의미.
'상위 요소 데이터에 접근 가능하다'는 사실에 주의하자. 이후에 있는 값들은 불러오지 못하는 것 같다.
하... 내가 AI로 flutter 앱 만들때 테마가 적용이 안되서 개고생해서 고친 기억이 있는데, 이런 방법이 있었으면.... 편하게 했을텐데.............
전체 코드:
결과는 다음과 같다:

'앱 만들기 프로젝트 > Flutter' 카테고리의 다른 글
Flutter - 5.0 User Interface (0) | 2024.11.13 |
---|---|
Flutter - 4.4 Widget Lifecycle (1) | 2024.10.27 |
Flutter - 4.1 setState (0) | 2024.10.27 |
Flutter - 4.0 State (0) | 2024.10.27 |
Flutter - 3.8 Reusable Cards (0) | 2024.10.27 |