[flutter] shared_preferences 를 사용하여 사용자가 시청한 영화 목록을 저장하는 방법은 무엇인가요?

소개

Flutter는 앱의 상태를 저장하고 유지 관리하기 위해 shared_preferences 패키지를 제공합니다. 이 패키지를 사용하면 사용자의 기기에 데이터를 저장하고 검색할 수 있습니다. 이 기능을 활용하여 사용자가 시청한 영화 목록을 저장하고 유지 관리하는 방법을 살펴보겠습니다.

shared_preferences 패키지 추가하기

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

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

그리고 패키지를 가져옵니다:

import 'package:shared_preferences/shared_preferences.dart';

영화 목록 저장하기

사용자가 영화를 시청할 때마다 해당 영화를 저장하기 위해 SharedPreferences 인스턴스를 생성해야 합니다. 아래는 영화 목록을 저장하는 함수의 예입니다:

Future<void> saveMovie(String movieName) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  List<String> watchedMovies = prefs.getStringList('watched_movies') ?? [];
  watchedMovies.add(movieName);
  await prefs.setStringList('watched_movies', watchedMovies);
}

위의 예제에서는 SharedPreferences.getInstance() 메서드를 사용하여 사용자의 기기에서 SharedPreferences 인스턴스를 가져옵니다. SharedPreferences.getStringList() 메서드를 사용하여 이전에 저장된 영화 목록을 가져옵니다. 그런 다음, 새로운 영화를 영화 목록에 추가하고 SharedPreferences.setStringList() 메서드를 사용하여 업데이트된 목록을 저장합니다.

영화 목록 불러오기

저장된 영화 목록을 불러오기 위해서는 아래와 같은 함수를 사용할 수 있습니다:

Future<List<String>> getWatchedMovies() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getStringList('watched_movies') ?? [];
}

위의 예제에서는 SharedPreferences.getStringList() 메서드를 사용하여 기기에 저장된 영화 목록을 가져옵니다. 만약 저장된 영화 목록이 없다면 빈 목록을 반환합니다.

예제 사용 방법

위의 함수를 통해 영화 목록을 저장하고 불러올 수 있습니다. 예를 들어, 사용자가 영화를 시청할 때마다 saveMovie() 함수를 호출하여 영화 목록에 저장할 수 있습니다. 이후, getWatchedMovies() 함수를 호출하여 저장된 영화 목록을 얻을 수 있습니다.

void main() async {
  await saveMovie('Avengers: Endgame');
  await saveMovie('Inception');
  
  List<String> watchedMovies = await getWatchedMovies();
  print(watchedMovies); // ['Avengers: Endgame', 'Inception']
}

위의 예제에서는 ‘Avengers: Endgame’과 ‘Inception’ 두 개의 영화를 저장하고, getWatchedMovies() 함수를 호출하여 영화 목록을 얻은 후 콘솔에 출력합니다.

결론

shared_preferences 패키지를 사용하여 Flutter에서 사용자가 시청한 영화 목록을 저장하는 방법을 알아보았습니다. SharedPreferences 인스턴스를 통해 영화 목록을 저장하고 불러올 수 있으며, 이를 활용하여 앱의 상태를 유지 관리할 수 있습니다.

참고 문서: