[flutter] shared_preferences 를 사용하여 사용자가 선택한 정렬 기준을 저장하는 방법은 무엇인가요?

Flutter 애플리케이션에서 사용자가 선택한 정렬 기준을 저장하려면 shared_preferences 패키지를 사용할 수 있습니다. 이 패키지는 키-값 형태로 데이터를 저장하고 로드하는데 사용됩니다.

아래는 사용자가 선택한 정렬 기준을 shared_preferences 에 저장하는 방법의 예시입니다.

  1. 먼저 shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일의 dependencies에 아래와 같이 추가해주세요.
dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6
  1. 다음으로, 정렬 기준을 설정하는 페이지에서 사용자가 선택한 값을 저장해야 합니다. 이를 위해 SharedPreferences 인스턴스를 생성하고 값을 저장하는 메서드를 작성합니다. 아래는 예시 코드입니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class SortingPage extends StatefulWidget {
  @override
  _SortingPageState createState() => _SortingPageState();
}

class _SortingPageState extends State<SortingPage> {
  String selectedSortOption = 'Name'; // 사용자가 선택한 정렬 기준

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sorting Page'),
      ),
      body: Column(
        children: [
          // 정렬 옵션을 선택할 수 있는 위젯들...
          // 예시: 라디오 버튼으로 선택할 수 있다고 가정

          ElevatedButton(
            onPressed: () {
              saveSortOption(selectedSortOption); // 정렬 기준을 저장하는 메서드 호출
              Navigator.pop(context); // 이전 페이지로 돌아감
            },
            child: Text('Save'),
          ),
        ],
      ),
    );
  }

  Future<void> saveSortOption(String sortOption) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('sortOption', sortOption);
  }
}

위 코드에서는 saveSortOption 메서드를 호출하여 사용자가 선택한 정렬 기준을 shared_preferences에 저장합니다. 키는 ‘sortOption’이고 값을 사용자가 선택한 정렬 기준으로 설정합니다.

  1. 이제 저장한 값을 다른 페이지에서 로드해볼 수 있습니다. 예를 들어, 정렬된 결과를 보여주는 페이지에서 사용자의 저장된 정렬 기준을 로드하고 적용하는 방법을 설명하겠습니다. 아래는 예시 코드입니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class SortedResultsPage extends StatefulWidget {
  @override
  _SortedResultsPageState createState() => _SortedResultsPageState();
}

class _SortedResultsPageState extends State<SortedResultsPage> {
  String currentSortOption = 'Name'; // 현재 정렬 기준

  @override
  void initState() {
    super.initState();
    loadSortOption(); // 저장된 정렬 기준을 로드하는 메서드 호출
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sorted Results Page'),
      ),
      body: Column(
        children: [
          // 정렬된 결과를 보여주는 위젯들...
          // 예시: ListView로 결과를 표시한다고 가정
        ],
      ),
    );
  }

  Future<void> loadSortOption() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String savedSortOption = prefs.getString('sortOption');

    if (savedSortOption != null) {
      setState(() {
        currentSortOption = savedSortOption;
      });
    }
  }
}

위 코드에서는 loadSortOption 메서드를 호출하여 저장된 정렬 기준을 shared_preferences에서 로드합니다. ‘sortOption’ 키의 값을 읽어온 후, 값이 존재한다면 currentSortOption 변수에 저장하고 상태를 변경하기 위해 setState 메서드를 호출합니다. 이후, currentSortOption 값을 사용하여 결과를 정렬하거나 표시할 수 있습니다.

이처럼 shared_preferences 패키지를 사용하여 Flutter 애플리케이션에서 사용자가 선택한 정렬 기준을 쉽게 저장하고 로드할 수 있습니다.