[flutter] shared_preferences 를 사용하여 사용자가 추가한 즐겨찾기 목록을 저장하는 방법은 무엇인가요?
- shared_preferences 라이브러리를 프로젝트에 추가합니다. pubspec.yaml 파일에 다음과 같이 dependencies에 추가합니다:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.6
- 즐겨찾기 목록을 저장하고 불러오기 위한 클래스를 만듭니다. 다음은 MyFavorites 클래스의 예시입니다:
import 'package:shared_preferences/shared_preferences.dart';
class MyFavorites {
static final String _favoritesKey = 'favorites';
static Future<List<String>> getFavorites() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> favorites = prefs.getStringList(_favoritesKey) ?? [];
return favorites;
}
static Future<void> addFavorite(String favorite) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> favorites = await getFavorites();
favorites.add(favorite);
await prefs.setStringList(_favoritesKey, favorites);
}
static Future<void> removeFavorite(String favorite) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> favorites = await getFavorites();
favorites.remove(favorite);
await prefs.setStringList(_favoritesKey, favorites);
}
}
- 사용자가 추가한 즐겨찾기를 저장하고 불러오는 기능을 구현합니다. 예를 들어, 버튼을 눌렀을 때 사용자가 현재 페이지를 즐겨찾기 목록에 추가한다고 가정하겠습니다. 다음은 즐겨찾기 추가 기능을 구현한 예시입니다:
import 'package:flutter/material.dart';
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Page'),
actions: [
IconButton(
icon: Icon(Icons.favorite),
onPressed: () {
String currentPage = 'My Page'; // 현재 페이지의 정보
MyFavorites.addFavorite(currentPage);
},
),
],
),
body: Container(
child: Center(
child: Text('My Page Content'),
),
),
);
}
}
- 즐겨찾기 목록을 사용하는 다른 화면이 있는 경우, MyFavorites 클래스를 사용하여 즐겨찾기 목록을 불러와서 표시할 수 있습니다. 예를 들어, 다음은 즐겨찾기 목록 화면을 구현한 예시입니다:
import 'package:flutter/material.dart';
class FavoritesPage extends StatefulWidget {
@override
_FavoritesPageState createState() => _FavoritesPageState();
}
class _FavoritesPageState extends State<FavoritesPage> {
List<String> favorites = [];
@override
void initState() {
super.initState();
loadFavorites();
}
void loadFavorites() async {
List<String> loadedFavorites = await MyFavorites.getFavorites();
setState(() {
favorites = loadedFavorites;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Favorites'),
),
body: ListView.builder(
itemCount: favorites.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(favorites[index]),
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () {
String favorite = favorites[index];
MyFavorites.removeFavorite(favorite);
setState(() {
favorites.removeAt(index);
});
},
),
);
},
),
);
}
}
위와 같이 shared_preferences 라이브러리를 사용하여 사용자가 추가한 즐겨찾기 목록을 간단하게 저장하고 불러오는 방법을 구현할 수 있습니다.