import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:tiktok_clone/constants/sizes.dart';
import 'package:tiktok_clone/features/authentication/sign_up_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations(
[
DeviceOrientation.portraitUp,
],
);
runApp(const TikTokApp());
}
class TikTokApp extends StatelessWidget {
const TikTokApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'TikTok Clone',
themeMode: ThemeMode.system,
theme: ThemeData(
textTheme: Typography.blackMountainView,
brightness: Brightness.light,
scaffoldBackgroundColor: Colors.white,
primaryColor: const Color(0xFFE9435A),
textSelectionTheme: const TextSelectionThemeData(
cursorColor: Color(0xFFE9435A),
),
splashColor: Colors.transparent,
appBarTheme: const AppBarTheme(
foregroundColor: Colors.black,
backgroundColor: Colors.white,
elevation: 0,
titleTextStyle: TextStyle(
color: Colors.black,
fontSize: Sizes.size16 + Sizes.size2,
fontWeight: FontWeight.w600,
),
),
),
darkTheme: ThemeData(
textTheme: Typography.whiteMountainView,
brightness: Brightness.dark,
scaffoldBackgroundColor: Colors.black,
appBarTheme: AppBarTheme(
backgroundColor: Colors.grey.shade900,
),
bottomAppBarTheme: BottomAppBarTheme(
color: Colors.grey.shade900,
),
primaryColor: const Color(0xFFE9435A),
),
home: const SignUpScreen(),
);
}
}
이 코드에서 Typography
는 Flutter의 ThemeData
를 설정할 때 사용되며, 앱의 전반적인 텍스트 스타일링을 결정하는 데 도움을 줍니다. Typography
클래스는 미리 정의된 텍스트 스타일의 모음입니다. Flutter는 다양한 텍스트 테마를 제공하며, 여기서는 blackMountainView
와 whiteMountainView
를 사용하여 라이트 모드와 다크 모드의 텍스트 테마를 각각 설정합니다.
textTheme: Typography.blackMountainView
: 이 설정은 라이트 모드에서 사용될 기본 텍스트 테마를 지정합니다. blackMountainView
는 라이트 모드에 적합한 색상 대비를 가진 텍스트 스타일을 제공합니다.
textTheme: Typography.whiteMountainView
: 이 설정은 다크 모드에서 사용될 기본 텍스트 테마를 지정합니다. whiteMountainView
는 다크 모드에 적합한 밝은 색상의 텍스트 스타일을 제공하여, 어두운 배경에서의 가독성을 높입니다.
brightness
: 앱의 전반적인 밝기 모드를 설정합니다. Brightness.light
는 라이트 모드, Brightness.dark
는 다크 모드를 나타냅니다.
scaffoldBackgroundColor
: Scaffold
위젯의 배경 색상을 설정합니다. 라이트 모드에서는 흰색(Colors.white
), 다크 모드에서는 검은색(Colors.black
)으로 설정됩니다.
primaryColor
: 앱의 주 색상을 설정합니다. 이 예제에서는 Color(0xFFE9435A)
로 지정되어, 앱의 버튼, 아이콘 등에 사용됩니다.
appBarTheme
: 앱 바의 스타일을 설정합니다. 여기서는 foregroundColor
, backgroundColor
, elevation
, titleTextStyle
등을 지정하여 라이트 모드와 다크 모드에서 앱 바의 외관을 조정합니다.
Typography
를 사용함으로써, Flutter 앱은 라이트 모드와 다크 모드에 적합한 텍스트 스타일을 쉽게 적용할 수 있습니다. 이를 통해 앱의 사용성과 가독성을 향상시킬 수 있으며, 사용자가 시스템 설정을 변경할 때 자동으로 적절한 테마가 적용되도록 할 수 있습니다. ThemeData
를 통해 정의된 스타일은 앱 전체에 일관되게 적용되어, 개발자가 앱의 시각적 일관성을 유지하기 쉽게 해줍니다.