[flutter] shared_preferences 를 사용하여 사용자가 필터링한 검색 결과를 저장하는 방법은 무엇인가요?

사용자가 필터링한 검색 결과를 저장하려면 Flutter에서 shared_preferences 패키지를 사용할 수 있습니다. shared_preferences는 앱 내에 키-값 쌍을 사용하여 데이터를 영구적으로 저장하는 기능을 제공합니다.

첫 번째로, shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음 의존성을 추가하고 패키지를 가져올 수 있습니다:

dependencies:
  shared_preferences: ^2.0.6

이제 패키지를 가져와서 사용자가 필터링한 결과를 저장하는 방법을 알아보겠습니다.

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

// 검색 결과를 저장할 키를 정의합니다.
const String FILTERED_RESULTS_KEY = 'filtered_results';

class SearchPage extends StatefulWidget {
  @override
  _SearchPageState createState() => _SearchPageState();
}

class _SearchPageState extends State<SearchPage> {
  List<String> filteredResults = [];

  @override
  void initState() {
    super.initState();
    // 앱이 시작될 때 저장된 검색 결과를 가져옵니다.
    _loadFilteredResults();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Search Page'),
      ),
      body: ListView.builder(
        itemCount: filteredResults.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(filteredResults[index]),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          // 사용자가 필터링한 결과를 추가합니다.
          await _addFilteredResult();
        },
        child: Icon(Icons.add),
      ),
    );
  }

  Future<void> _loadFilteredResults() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      // 저장된 검색 결과를 가져와서 필터링된 결과에 할당합니다.
      filteredResults = prefs.getStringList(FILTERED_RESULTS_KEY) ?? [];
    });
  }

  Future<void> _addFilteredResult() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
    // 사용자가 필터링한 결과를 추가합니다.
    String newResult = 'Filtered Result ${filteredResults.length + 1}';
    setState(() {
      // 필터링된 결과에 추가합니다.
      filteredResults.add(newResult);
    });

    // 추가된 결과를 저장합니다.
    await prefs.setStringList(FILTERED_RESULTS_KEY, filteredResults);
  }
}

위의 예제 코드에서는 SearchPage StatefulWidget을 만들고, 필터링된 결과가 표시되는 ListView를 구성합니다. 필터링된 결과는 filteredResults 리스트에 저장되고, 필터링된 결과를 추가할 때마다 shared_preferences를 사용하여 저장됩니다.

_loadFilteredResults 함수는 앱이 시작될 때 저장된 검색 결과를 가져와 filteredResults 리스트에 할당합니다. _addFilteredResult 함수는 새로운 검색 결과를 생성하고 filteredResults에 추가한 다음, 저장합니다. 새로운 결과가 추가될 때마다 setState 함수를 호출하여 UI를 업데이트합니다.

이제 사용자가 필터링한 검색 결과가 shared_preferences를 사용하여 영구적으로 저장되었습니다. 재시작하더라도 검색 결과가 유지될 것입니다.

자세한 내용은 shared_preferences 패키지의 문서를 참조하시기 바랍니다.