[flutter] shared_preferences를 사용하여 사용자가 앱 내에서 생성한 즐겨찾기를 확인하는 방법은?

앱 내에서 사용자가 생성한 즐겨찾기를 확인하려면 shared_preferences 패키지를 사용할 수 있습니다. 이 패키지를 통해 간단하게 사용자의 기기에 데이터를 저장하고 검색할 수 있습니다.

1. shared_preferences 패키지 추가

먼저, pubspec.yaml 파일에 shared_preferences 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

그런 다음 터미널에서 flutter pub get 명령을 실행하여 패키지를 가져옵니다.

2. 즐겨찾기 추가 및 검색

아래는 간단한 예제입니다. 사용자가 즐겨찾기에 추가한 목록을 저장하고 가져오는 방법을 보여줍니다.

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<String> favorites = [];

  @override
  void initState() {
    super.initState();
    _getFavorites();
  }

  _getFavorites() async {
    final prefs = await SharedPreferences.getInstance();
    setState(() {
      favorites = prefs.getStringList('favorites') ?? [];
    });
  }

  _addFavorite(String item) async {
    final prefs = await SharedPreferences.getInstance();
    favorites.add(item);
    await prefs.setStringList('favorites', favorites);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('즐겨찾기'),
        ),
        body: ListView.builder(
          itemCount: favorites.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(favorites[index]),
            );
          },
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            _addFavorite('이것은 예제입니다');
          },
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

위의 예제 코드는 사용자가 즐겨찾기 목록에 아이템을 추가하면 해당 목록을 기기에 저장합니다. 앱을 다시 실행하거나 다시 시작해도 사용자가 추가한 즐겨찾기를 확인할 수 있습니다.

shared_preferences 패키지를 사용하여 사용자가 앱 내에서 생성한 즐겨찾기를 손쉽게 관리할 수 있습니다.

위의 예제에서는 간단한 문자열 목록을 저장하고 가져오는 방법을 설명했지만, 실제 앱에서는 복잡한 데이터 구조를 저장하고 활용할 수 있습니다.

이상입니다. 부족한 부분이 있거나 추가적인 정보가 필요하신 경우에는 언제든지 문의해 주세요.