Flutter에서 ThemeData
클래스는 위젯이 아니라 머티리얼 디자인 테마에 대한 색상과 타이포그래피 값을 저장하는 클래스입니다. 이 클래스를 사용하여 앱의 전반적인 시각적 테마를 정의할 수 있습니다. ThemeData
를 맞춤 설정함으로써, 앱 전체에 걸쳐 일관된 모양과 느낌을 제공할 수 있습니다. 다음은 그 주요 측면들입니다:
ThemeData
에는 다양한 속성이 포함되어 있습니다. 가장 흔히 사용되는 속성은 다음과 같습니다:
일반적으로 앱의 루트에서 ThemeData
를 정의하며, 앱 전체에 적용됩니다. 기본 예시는 다음과 같습니다:
MaterialApp(
theme: ThemeData(
primaryColor: Colors.blue,
accentColor: Colors.amber,
textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.black),
bodyText2: TextStyle(color: Colors.grey),
),
),
home: MyHomePage(),
)
이 예제에서 primaryColor
는 파란색으로, accentColor
는 호박색으로 설정되어 있으며, textTheme
아래에서 두 가지 텍스트 스타일이 정의됩니다.
앱의 특정 부분에 대해 테마를 재정의할 수도 있습니다. 예를 들어, 특정 화면에 다른 테마를 사용하려면 다음과 같습니다:
Theme(
data: Theme.of(context).copyWith(
primaryColor: Colors.green,
),
child: Scaffold(
appBar: AppBar(
title: Text('Custom Themed AppBar'),
),
body: // 여기에 본문 내용
),
)
여기서 Theme.of(context)
는 현재 테마를 가져오는 데 사용되며, copyWith
는 특정 속성을 수정하는 데 사용됩니다.
Flutter의 AppBarTheme는 애플리케이션 전체에서 AppBar 위젯의 모양을 사용자 지정하는 데 특별히 사용되는 테마 데이터 클래스입니다. 전체 테마 데이터의 일부이며 앱에서 사용되는 모든 앱바의 기본 스타일과 동작을 정의할 수 있습니다. 앱바 테마를 사용하면 각 앱바의 스타일을 개별적으로 지정할 필요 없이 여러 화면에서 일관된 테마를 유지할 수 있습니다.
import 'package:flutter/material.dart';
import 'package:tiktok_clone/constants/sizes.dart';
import 'package:tiktok_clone/features/authentication/sign_up_screen.dart';
void main() {
runApp(const TikTokApp());
}
class TikTokApp extends StatelessWidget {
const TikTokApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
title: 'TikTok Clone',
theme: ThemeData(
scaffoldBackgroundColor: Colors.white,
primaryColor: const Color(0xFFE9435A),
appBarTheme: const AppBarTheme(
foregroundColor: Colors.black,
backgroundColor: Colors.white,
elevation: 0,
titleTextStyle: TextStyle(
color: Colors.black,
fontSize: Sizes.size16 + Sizes.size2,
fontWeight: FontWeight.w600,
),
),
),
home: const SignUpScreen(),
);
}
}
AppBarTheme
은 Flutter에서 AppBar
위젯의 외관을 맞춤 설정하기 위해 사용되는 테마 데이터 클래스입니다. 이는 전체 ThemeData
의 일부로, 앱 전체의 모든 AppBar
에 대한 기본 스타일링과 동작을 정의할 수 있습니다. AppBarTheme
을 사용하면 각각의 AppBar
를 개별적으로 스타일링하지 않고도 다양한 화면에서 일관된 테마를 보장할 수 있습니다.
AppBarTheme
의 주요 속성앱의 메인 테마 데이터 내에서 AppBarTheme
을 정의하면 앱의 모든 AppBar에 자동으로 적용됩니다. 예를 들면 다음과 같습니다:
MaterialApp(
theme: ThemeData(
appBarTheme: AppBarTheme(
color: Colors.blue,
elevation: 2,
brightness: Brightness.dark,
iconTheme: IconThemeData(color: Colors.white),
textTheme: TextTheme(
headline6: TextStyle(color: Colors.white, fontSize: 20),
),
),
),
home: MyHomePage(),
)
이 예제에서 앱의 모든 AppBar는 파란색, 2의 그림자 높이, 어두운 밝기(상태 표시줄의 텍스트 및 아이콘에 영향을 줌), 흰색 아이콘 및 특정 텍스트 테마를 가집니다.
AppBarTheme
을 이와 같이 사용하면 앱의 시각적 측면에서 일관성을 유지하고 AppBar의 외관에 대한 전역 변경 사항을 쉽게 적용할 수 있습니다.