[flutter] shared_preferences 를 사용하여 사용자의 선호 장르 설정을 저장하는 방법은 무엇인가요?

이번 글에서는 Flutter 앱에서 사용자의 선호 장르 설정을 저장하기 위해 shared_preferences 패키지를 사용하는 방법에 대해 알아보겠습니다. shared_preferences는 Flutter 앱 내에서 간단한 데이터를 영구적으로 저장하기 위해 사용되는 패키지입니다.

1. shared_preferences 패키지 추가하기

먼저 pubspec.yaml 파일에 shared_preferences 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

그리고 터미널에서 아래 명령어를 실행하여 패키지를 가져옵니다.

flutter pub get

2. 선호 장르 설정 저장하기

선호 장르 설정을 저장하기 위해 SharedPreferences 클래스를 사용합니다. 아래의 예제 코드를 참고하십시오.

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

class GenrePreferences {
  static const String _genreKey = 'genre';

  Future<void> saveGenre(String genre) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString(_genreKey, genre);
  }

  Future<String?> getGenre() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return prefs.getString(_genreKey);
  }
}

위 코드에서 saveGenre 함수는 사용자의 선호 장르를 저장하는 역할을 합니다. getGenre 함수는 저장된 선호 장르를 가져오는 역할을 합니다.

3. 사용자 입력 받기

앱 내에서 사용자로부터 선호 장르를 입력 받아야 합니다. 여기서는 간단한 폼을 사용하여 사용자 입력을 받아 저장하는 예제를 보여드리겠습니다.

class GenreSelectionPage extends StatefulWidget {
  @override
  _GenreSelectionPageState createState() => _GenreSelectionPageState();
}

class _GenreSelectionPageState extends State<GenreSelectionPage> {
  final genreController = TextEditingController();
  final genrePreferences = GenrePreferences();

  @override
  void dispose() {
    genreController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('선호 장르 설정'),
      ),
      body: Padding(
        padding: EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: genreController,
              decoration: InputDecoration(
                labelText: '선호 장르',
              ),
            ),
            ElevatedButton(
              onPressed: () {
                String genre = genreController.text;
                genrePreferences.saveGenre(genre);
                Navigator.pop(context);
              },
              child: Text('저장하기'),
            ),
          ],
        ),
      ),
    );
  } 
}

위 코드에서는 GenrePreferences 클래스의 saveGenre 함수를 호출하여 사용자가 입력한 선호 장르를 저장합니다. 이후 Navigator.pop을 통해 이전 페이지로 돌아갑니다.

4. 선호 장르 불러오기

앱이 시작될 때 저장된 선호 장르를 불러올 수 있도록 main 함수를 수정해야 합니다.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  String? genre = prefs.getString(GenrePreferences._genreKey);
  
  runApp(MyApp(genre: genre));
}

위 코드에서 SharedPreferences.getInstance를 통해 저장된 선호 장르를 불러옵니다. 그리고 MyApp 위젯을 생성할 때 genre 값을 전달합니다.

이제 사용자의 선호 장르 설정을 저장하고 불러오는 기능이 구현되었습니다. 앱 내에서 이 설정을 활용하여 사용자 맞춤 콘텐츠를 제공할 수 있습니다.

결론

이번 글에서는 Flutter 앱에서 사용자의 선호 장르 설정을 저장하는 방법에 대해 알아보았습니다. shared_preferences 패키지를 사용하여 간단하게 데이터를 영구적으로 저장하고 불러올 수 있습니다. 이를 바탕으로 앱 내에서 사용자에게 맞춤화된 경험을 제공할 수 있습니다.