[flutter] shared_preferences를 활용하여 앱 내에서 사용자가 선택한 테마 색상을 저장하는 방법은?

앱에서 사용자가 선택한 테마 색상을 저장하려면 shared_preferences 패키지를 사용할 수 있습니다. 이 패키지를 활용하면 사용자의 기기 내에 간단한 데이터를 영구적으로 저장하고 불러올 수 있습니다.

1. shared_preferences 패키지 추가하기

가장 먼저 pubspec.yaml 파일에 shared_preferences 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

그런 다음 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

2. 테마 선택 값 저장하기

사용자가 테마를 선택했을 때 해당 값을 shared_preferences에 저장합니다. 아래는 테마 선택 값을 저장하는 예제 코드입니다.

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void saveThemeColor(String color) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('themeColor', color);
}

3. 저장된 테마 값 불러오기

앱을 실행할 때 저장된 테마 선택 값을 불러옵니다. 아래는 저장된 테마 값을 불러오는 예제 코드입니다.

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

Future<String> getThemeColor() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getString('themeColor') ?? 'defaultColor';  // 기본 값 설정
}

4. 테마에 적용하기

불러온 테마 값을 이용하여 앱의 테마를 변경합니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
        accentColor: Colors.green,
        // 저장된 테마 값으로 변경
        brightness: getThemeColor() == 'dark' ? Brightness.dark : Brightness.light,
      ),
      home: MyHomePage(),
    );
  }
}

이제 사용자가 앱에서 선택한 테마 색상이 shared_preferences를 통해 저장되고 로드됩니다.

이 방법을 활용하면 사용자가 앱의 테마를 변경하더라도 선택한 값이 영구적으로 유지되어 향후 앱 실행 시에도 이전의 선택이 유지됩니다.

참고 자료: shared_preferences 패키지 문서