import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'dart:ui' as ui; class LocaleProvider extends ChangeNotifier { late Box _localeBox; Locale _locale = const Locale('ko'); static const List supportedLanguages = ['en', 'ko', 'ja', 'zh']; Locale get locale => _locale; Future init() async { _localeBox = await Hive.openBox('locale'); // 저장된 언어 설정 확인 final savedLocale = _localeBox.get('locale'); if (savedLocale != null) { // 저장된 언어가 있으면 사용 _locale = Locale(savedLocale); } else { // 저장된 언어가 없으면 시스템 언어 감지 final systemLocale = ui.PlatformDispatcher.instance.locale; // 시스템 언어가 지원되는 언어인지 확인 if (supportedLanguages.contains(systemLocale.languageCode)) { _locale = Locale(systemLocale.languageCode); } else { // 지원되지 않는 언어면 영어 사용 _locale = const Locale('en'); } // 감지된 언어 저장 await _localeBox.put('locale', _locale.languageCode); } notifyListeners(); } Future setLocale(String languageCode) async { if (_locale.languageCode != languageCode) { _locale = Locale(languageCode); await _localeBox.put('locale', languageCode); notifyListeners(); } } }