[flutter] shared_preferences를 사용하여 사용자가 선택한 언어를 앱 내에서 적용하는 방법은?
안녕하세요! Flutter 앱에서 사용자가 선택한 언어 설정을 저장하고 적용하는 방법에 대해 알아보겠습니다. 이에 대한 예제 코드를 포함하여 설명드리겠습니다.
1. shared_preferences
패키지 추가
먼저 shared_preferences
패키지를 프로젝트에 추가합니다. 이 패키지는 키-값 쌍의 간단한 데이터를 지속적으로 저장할 수 있도록 해줍니다. pubspec.yaml
파일에 아래와 같이 패키지를 추가합니다.
dependencies:
shared_preferences: ^2.0.7
의존성을 추가한 후에는 pub get
을 실행하여 패키지를 다운로드하고 사용할 준비를 완료합니다.
2. 사용자가 선택한 언어 저장
언어 선택에 따라 사용자가 설정한 언어를 shared_preferences
를 사용하여 저장합니다. 다음은 예제 코드입니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void setLanguage(String languageCode) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('language', languageCode);
}
3. 저장된 언어 적용
앱이 시작될 때 저장된 언어를 확인하고 이를 적용하는 방법입니다.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) {
runApp(MyApp());
});
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getLanguage(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return MaterialApp(
title: 'My App',
locale: Locale(snapshot.data),
supportedLocales: [
const Locale('en', 'US'),
const Locale('ko', 'KR'),
],
localizationsDelegates: [
// 여기에 로컬라이제이션을 위한 델리게이트들을 추가
],
home: MyHomePage(),
);
} else {
return CircularProgressIndicator();
}
},
);
}
}
Future<String> getLanguage() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('language') ?? 'en'; // 기본값은 영어로 설정
}
위 코드에서 ‘language’라는 키로 저장된 사용자의 언어 설정을 불러옵니다. 저장된 값이 없을 경우 기본값으로 영어가 설정됩니다.
호출된 getLanguage
함수에서 반환된 언어 코드를 사용하여 MaterialApp
의 locale
을 설정합니다. 이제 사용자가 선택한 언어가 앱 내에서 적용됩니다.
이상으로 Flutter에서 shared_preferences
를 사용하여 사용자가 선택한 언어를 앱 내에서 적용하는 방법을 살펴보았습니다. 부족한 부분이 있거나 질문이 있다면 언제라도 물어보세요!