[flutter] shared_preferences 를 사용하여 사용자가 선택한 사운드 재생 목록을 저장하는 방법은 무엇인가요?

Flutter에서는 shared_preferences 패키지를 사용하여 간단하게 사용자의 설정과 데이터를 저장할 수 있습니다. 이 패키지를 사용하여 사용자가 선택한 사운드 재생 목록을 저장하고 불러오는 방법을 알아보겠습니다.

1. shared_preferences 패키지 추가

사운드 재생 목록을 저장하기 위해 shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 아래와 같이 패키지를 추가합니다.

dependencies:
  shared_preferences: ^2.0.13

설정을 적용하기 위해 pub get 명령을 실행하면 패키지가 프로젝트에 추가됩니다.

2. 데이터 저장하기

먼저, 사운드 재생 목록을 저장하는 메서드를 작성합니다. 다음은 saveSoundPlaylist라는 메서드 예시입니다.

import 'package:shared_preferences/shared_preferences.dart';

void saveSoundPlaylist(List<String> playlist) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setStringList('sound_playlist', playlist);
}

위의 코드에서는 SharedPreferences.getInstance() 메서드를 사용하여 SharedPreferences 인스턴스를 얻습니다. 이 인스턴스를 통해 데이터를 저장하고 불러올 수 있습니다.

prefs.setStringList('sound_playlist', playlist)를 사용하여 데이터를 저장합니다. sound_playlist는 저장할 데이터의 키입니다. playlist은 사용자가 선택한 사운드 재생 목록의 리스트입니다.

3. 데이터 불러오기

다음으로, 저장된 데이터를 불러와서 사용하는 메서드를 작성합니다. 다음은 loadSoundPlaylist라는 메서드 예시입니다.

import 'package:shared_preferences/shared_preferences.dart';

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

위의 코드에서는 prefs.getStringList('sound_playlist')를 사용하여 저장된 데이터를 불러옵니다. 가져온 데이터는 List<String>? 형태로 반환됩니다. 이때 데이터가 없으면 null이므로 기본값인 빈 리스트 []로 반환합니다.

4. 사용 예시

이제 saveSoundPlaylistloadSoundPlaylist 메서드를 사용하여 사용자가 선택한 사운드 재생 목록을 저장하고 불러올 수 있습니다. 다음은 사용 예시입니다.

List<String> playlist = ['sound1', 'sound2', 'sound3'];
saveSoundPlaylist(playlist);

Future<void> printPlaylist() async {
  List<String> loadedPlaylist = await loadSoundPlaylist();
  print(loadedPlaylist);
}

printPlaylist(); // ['sound1', 'sound2', 'sound3']

위의 예시에서는 먼저 playlist이라는 사운드 재생 목록을 saveSoundPlaylist 메서드를 사용하여 저장합니다. 그리고 printPlaylist 메서드를 호출하여 저장된 목록을 불러와 출력합니다.

이렇게 shared_preferences 패키지를 사용하여 사용자가 선택한 사운드 재생 목록을 저장하고 불러올 수 있습니다.

참고 자료