[Flutter] 자식한테 원하는 Theme 적용하기

멋진감자·2025년 7월 15일
0

Flutter

목록 보기
11/25
post-thumbnail

중간에 어떤 위젯의 자식들은 새로운 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 위젯 영향 → 빨강
        ),
      ),
    ),
  );
}

원하는 Theme 가져오기

style: Theme.of(context).textTheme.bodyMedium
ThemeData() > textTheme > bodyMedium Theme만 적용하라

요런식으로 원하는 ThemeData 안의 내용을 불러올 수 있다.
바꿔말하면 여러 스타일을 정의해두고 Theme.of()로 갖다 쓰기 가능

profile
난멋져

0개의 댓글