[flutter] shared_preferences 를 사용하여 사용자가 생성한 이벤트 목록을 저장하는 방법은 무엇인가요?

Flutter에서는 shared_preferences 패키지를 사용하여 사용자가 생성한 이벤트 목록을 로컬에 저장할 수 있습니다. shared_preferences 패키지는 간단한 키-값 쌍으로 데이터를 저장하고 검색하는 데 사용됩니다.

먼저, shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에서 dependencies 섹션에 아래의 의존성을 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.8

이 의존성을 추가한 후에는 flutter pub get 명령을 실행하여 패키지를 다운로드하고 설치하세요.

이제 shared_preferences를 사용하여 이벤트 목록을 저장하는 방법을 알아보겠습니다. 다음은 예제 코드입니다:

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

class EventListPage extends StatefulWidget {
  @override
  _EventListPageState createState() => _EventListPageState();
}

class _EventListPageState extends State<EventListPage> {
  List<String> eventList = [];

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

  void loadEventList() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    List<String> savedEventList = prefs.getStringList('eventList');

    if (savedEventList != null) {
      setState(() {
        eventList = savedEventList;
      });
    }
  }

  void saveEventList() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setStringList('eventList', eventList);
  }

  void addEvent(String event) {
    setState(() {
      eventList.add(event);
    });
    saveEventList();
  }

  void removeEvent(String event) {
    setState(() {
      eventList.remove(event);
    });
    saveEventList();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Event List'),
      ),
      body: Column(
        children: [
          RaisedButton(
            child: Text('Add Event'),
            onPressed: () {
              showDialog(
                context: context,
                builder: (BuildContext context) {
                  return AlertDialog(
                    title: Text('Add Event'),
                    content: TextField(
                      onChanged: (value) {
                        // Event 입력 필드에서 입력할 때마다 event 변수에 값을 업데이트합니다.
                        event = value;
                      },
                    ),
                    actions: [
                      FlatButton(
                        child: Text('Cancel'),
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                      ),
                      FlatButton(
                        child: Text('Add'),
                        onPressed: () {
                          addEvent(event);
                          Navigator.of(context).pop();
                        },
                      ),
                    ],
                  );
                }
              );
            },
          ),
          SizedBox(height: 20),
          ListView.builder(
            shrinkWrap: true,
            itemCount: eventList.length,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(
                title: Text(eventList[index]),
                trailing: IconButton(
                  icon: Icon(Icons.delete),
                  onPressed: () {
                    removeEvent(eventList[index]);
                  },
                ),
              );
            },
          ),
        ],
      ),
    );
  }
}

위의 코드는 Flutter 애플리케이션에서 이벤트 목록을 관리하는 간단한 예제입니다. EventListPage 위젯에서는 사용자에게 이벤트를 추가하고 삭제할 수 있는 기능을 제공합니다. SharedPreferences 객체를 사용하여 이벤트 목록을 로컬에 저장하고 불러오는 방법을 보여줍니다.

loadEventList 함수는 앱이 시작될 때 저장된 이벤트 목록을 로드합니다. 저장된 목록이 존재한다면, eventList 변수를 업데이트하고 화면을 다시 그립니다. saveEventList 함수는 eventList를 로컬에 저장하고, addEvent 함수는 이벤트를 목록에 추가하고 저장합니다. 마지막으로, removeEvent 함수는 이벤트를 목록에서 제거하고 저장합니다.

위의 예제를 참고하여 shared_preferences를 사용하여 사용자가 생성한 이벤트 목록을 저장하고 관리할 수 있습니다.