[flutter] shared_preferences 를 사용하여 사용자가 추가한 즐겨찾기 목록을 저장하는 방법은 무엇인가요?
  1. shared_preferences 라이브러리를 프로젝트에 추가합니다. pubspec.yaml 파일에 다음과 같이 dependencies에 추가합니다:
dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6
  1. 즐겨찾기 목록을 저장하고 불러오기 위한 클래스를 만듭니다. 다음은 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);
  }
}
  1. 사용자가 추가한 즐겨찾기를 저장하고 불러오는 기능을 구현합니다. 예를 들어, 버튼을 눌렀을 때 사용자가 현재 페이지를 즐겨찾기 목록에 추가한다고 가정하겠습니다. 다음은 즐겨찾기 추가 기능을 구현한 예시입니다:
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'),
        ),
      ),
    );
  }
}
  1. 즐겨찾기 목록을 사용하는 다른 화면이 있는 경우, 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 라이브러리를 사용하여 사용자가 추가한 즐겨찾기 목록을 간단하게 저장하고 불러오는 방법을 구현할 수 있습니다.