Flutter에서 shared_preferences
패키지는 사용자의 기기에 데이터를 저장하기 위한 간단하고 효과적인 방법을 제공합니다. 이를 사용하여 사용자의 최근 검색 기록을 저장하는 방법은 다음과 같습니다:
-
shared_preferences
패키지를 프로젝트에 추가합니다. 이를 위해pubspec.yaml
파일을 열고dependencies
섹션에 다음을 추가합니다:dependencies: shared_preferences: ^2.0.5
그런 다음 터미널에서
flutter pub get
명령을 실행하여 패키지를 가져옵니다. -
최근 검색 기록을 저장하기 위한
SharedPreferences
인스턴스를 생성합니다. 일반적으로 앱의 상태 관리 클래스나 뷰 모델에서 이를 수행합니다. 예를 들어:import 'package:shared_preferences/shared_preferences.dart'; class SearchHistoryManager { final String _prefsKey = "search_history"; SharedPreferences _prefs; Future<void> init() async { _prefs = await SharedPreferences.getInstance(); } Future<List<String>> getSearchHistory() async { return _prefs.getStringList(_prefsKey) ?? []; } Future<void> saveSearchQuery(String query) async { List<String> searchHistory = await getSearchHistory(); if (searchHistory.contains(query)) { searchHistory.remove(query); // 기존에 있던 쿼리를 삭제하여 중복을 방지합니다. } searchHistory.add(query); await _prefs.setStringList(_prefsKey, searchHistory); } }
위의 예제는
SharedPreferences
를 사용하여 최근 검색 기록을 저장하거나 검색 기록을 가져오는 방법을 보여줍니다._prefsKey
는 SharedPreferences에서 사용할 키입니다. 앱이 시작될 때init
함수를 호출하여 SharedPreferences 인스턴스를 초기화해야 합니다. -
앱의 검색 기능과 연결하여 최근 검색 기록을 저장합니다. 예를 들어, 사용자가 검색 창에서 특정 검색어를 입력하면 다음과 같이
SearchHistoryManager
를 사용하여 최근 검색 기록을 저장할 수 있습니다:void onSearch(String query) { // 검색 로직 처리 SearchHistoryManager().saveSearchQuery(query); }
위의 예제는
SearchHistoryManager
의saveSearchQuery
함수를 호출하여 검색어를 저장합니다. 이를 통해 최근 검색 기록이 사용자의 기기에 저장되고 나중에 가져오거나 업데이트할 수 있습니다. -
앱의 적절한 부분에서 사용자 인터페이스(UI)에 검색 기록을 표시합니다. 예를 들어, 최근 검색 기록을 ListView로 표시하는 방법은 다음과 같습니다:
class SearchHistoryScreen extends StatelessWidget { @override Widget build(BuildContext context) { return FutureBuilder<List<String>>( future: SearchHistoryManager().getSearchHistory(), builder: (context, snapshot) { if (snapshot.hasData) { List<String> searchHistory = snapshot.data; return ListView.builder( itemCount: searchHistory.length, itemBuilder: (context, index) { String query = searchHistory[index]; return ListTile( title: Text(query), onTap: () => onSearch(query), ); }, ); } else { return CircularProgressIndicator(); } }, ); } }
위의 예제는
SearchHistoryManager
의getSearchHistory
함수를 호출하여 검색 기록을 가져오고, 가져온 기록을 ListView로 표시합니다.
이렇게하면 Flutter 앱에서 사용자의 최근 검색 기록을 저장하고 표시할 수 있습니다. shared_preferences
는 기기의 로컬 저장소를 사용하므로 앱을 닫고 다시 열어도 검색 기록이 유지됩니다.