feat(front): 프론트 화면 개선 및 설정 저장소 추가
- front_screen_animation.dart: 프론트 화면 애니메이션 추가 - settings_repository.dart: 설정 저장소 구현 - front/widgets/: 프론트 화면 위젯 분리 - mobile_carousel_layout.dart: 모바일 레이아웃 개선 - app.dart: 앱 설정 개선 - game_text_l10n.dart: 텍스트 추가
This commit is contained in:
52
lib/src/core/storage/settings_repository.dart
Normal file
52
lib/src/core/storage/settings_repository.dart
Normal file
@@ -0,0 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
/// 앱 설정 저장소 (SharedPreferences 기반)
|
||||
///
|
||||
/// 테마, 언어 등 사용자 설정을 로컬에 저장
|
||||
class SettingsRepository {
|
||||
static const _keyThemeMode = 'theme_mode';
|
||||
static const _keyLocale = 'locale';
|
||||
|
||||
SharedPreferences? _prefs;
|
||||
|
||||
/// SharedPreferences 초기화
|
||||
Future<void> init() async {
|
||||
_prefs ??= await SharedPreferences.getInstance();
|
||||
}
|
||||
|
||||
/// 테마 모드 저장
|
||||
Future<void> saveThemeMode(ThemeMode mode) async {
|
||||
await init();
|
||||
final value = switch (mode) {
|
||||
ThemeMode.light => 'light',
|
||||
ThemeMode.dark => 'dark',
|
||||
ThemeMode.system => 'system',
|
||||
};
|
||||
await _prefs!.setString(_keyThemeMode, value);
|
||||
}
|
||||
|
||||
/// 테마 모드 불러오기
|
||||
Future<ThemeMode> loadThemeMode() async {
|
||||
await init();
|
||||
final value = _prefs!.getString(_keyThemeMode);
|
||||
return switch (value) {
|
||||
'light' => ThemeMode.light,
|
||||
'dark' => ThemeMode.dark,
|
||||
'system' => ThemeMode.system,
|
||||
_ => ThemeMode.system, // 기본값
|
||||
};
|
||||
}
|
||||
|
||||
/// 언어 설정 저장
|
||||
Future<void> saveLocale(String locale) async {
|
||||
await init();
|
||||
await _prefs!.setString(_keyLocale, locale);
|
||||
}
|
||||
|
||||
/// 언어 설정 불러오기
|
||||
Future<String?> loadLocale() async {
|
||||
await init();
|
||||
return _prefs!.getString(_keyLocale);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user