중간에 어떤 위젯의 자식들은 새로운 Theme을 따르면 좋겠다 싶을 땐
위젯을 Theme()으로 감싸고(전구 활용) data: ThemeData(원하는 Theme) 작성
void main() {
runApp(
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(bodyMedium: TextStyle(color: Colors.blue)), // 전체 텍스트 색상: 파랑
),
home: Scaffold(
body: Center(child: Text('파란색 텍스트')), // 별도 style 없음 → 파랑
),
),
);
}
void main() {
runApp(
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(bodyMedium: TextStyle(color: Colors.blue)), // 기본 파랑
),
home: Scaffold(
body: Theme(
data: ThemeData(
textTheme: TextTheme(bodyMedium: TextStyle(color: Colors.red)), // 오버라이드 빨강
),
child: Center(child: Text('빨간색 텍스트')), // Theme 위젯 영향 → 빨강
),
),
),
);
}
style: Theme.of(context).textTheme.bodyMedium
→ ThemeData() > textTheme > bodyMedium Theme만 적용하라
요런식으로 원하는 ThemeData 안의 내용을 불러올 수 있다.
바꿔말하면 여러 스타일을 정의해두고 Theme.of()로 갖다 쓰기 가능