이벤트 목록을 사용자가 참여한 이벤트를 저장할 때, Flutter 앱에서 shared_preferences
패키지를 사용할 수 있습니다. shared_preferences
를 통해 앱에서 간단한 키-값 쌍을 지속적으로 저장하고 검색할 수 있습니다.
1. shared_preferences
패키지 추가
먼저, shared_preferences
패키지를 프로젝트에 추가해야 합니다. pubspec.yaml
파일의 dependencies
섹션에 아래의 코드를 추가하고, 패키지를 가져옵니다.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.5
그리고나서 터미널에서 flutter pub get
명령을 실행하여 패키지를 가져옵니다.
2. 이벤트 목록 저장하기
이제 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();
}
Future<void> _loadEventList() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> eventList = prefs.getStringList('eventList') ?? [];
setState(() {
_eventList = eventList;
});
}
Future<void> _saveEventList(List<String> eventList) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setStringList('eventList', eventList);
}
void _addEvent(String eventName) {
setState(() {
_eventList.add(eventName);
_saveEventList(_eventList);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('이벤트 목록'),
),
body: Column(
children: [
Text('참여한 이벤트 목록:'),
ListView.builder(
shrinkWrap: true,
itemCount: _eventList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_eventList[index]),
);
},
),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
_addEvent('새로운 이벤트');
},
child: Icon(Icons.add),
),
);
}
}
위의 코드에서 EventListPage
는 사용자가 참여한 이벤트 목록을 보여주는 페이지입니다. SharedPreferences
를 사용하여 _eventList
라는 이벤트 목록을 로드하고, _addEvent
함수를 통해 새로운 이벤트를 추가하고 _saveEventList
를 호출하여 eventList
를 저장합니다.
3. 사용자가 이벤트 목록에 접근하는 방법
이제 저장된 이벤트 목록에 접근하는 방법을 알아봅시다. 다른 페이지나 위젯에서 이벤트 목록을 사용하려면 SharedPreferences
를 사용하여 이벤트 목록을 로드하면 됩니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AnotherWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder<List<String>>(
future: _loadEventList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<String> eventList = snapshot.data!;
// 이벤트 목록 사용
return ListView.builder(
itemCount: eventList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(eventList[index]),
);
},
);
} else if (snapshot.hasError) {
return Text('이벤트 목록 로드 실패');
} else {
return CircularProgressIndicator(); // 로딩 표시기
}
},
);
}
Future<List<String>> _loadEventList() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> eventList = prefs.getStringList('eventList') ?? [];
return eventList;
}
}
위의 코드에서 AnotherWidget
은 FutureBuilder
를 사용하여 _loadEventList
함수를 호출하고 이벤트 목록을 표시합니다. 로딩 상태일 때는 CircularProgressIndicator
를 표시하고, 데이터가 없을 때나 오류가 발생했을 때는 각각 메시지를 표시합니다.
이제 shared_preferences
를 사용하여 사용자가 참여한 이벤트 목록을 저장하고 액세스하는 방법을 알게 되었습니다.
더 자세한 정보는 shared_preferences 패키지의 공식 문서를 참고하세요.