[flutter] shared_preferences 를 사용하여 사용자가 본 영화의 평점을 저장하는 방법은 무엇인가요?

영화 앱을 개발하면서 사용자가 본 영화의 평점을 저장하고 싶을 때가 있을 수 있습니다. Flutter에서는 shared_preferences 패키지를 사용하여 간편하게 사용자 데이터를 저장하고 불러올 수 있습니다. 이번 글에서는 shared_preferences 패키지를 사용하여 사용자가 본 영화의 평점을 저장하는 방법에 대해 알아보겠습니다.

1. shared_preferences 패키지 추가하기

먼저, pubspec.yaml 파일에 shared_preferences 패키지를 추가해야 합니다. 파일에 아래의 코드를 추가하세요:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

그런 다음 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드하세요.

2. 영화 평점 저장하기

이제 영화 평점을 저장하는 코드를 작성해보겠습니다. 다음과 같이 SharedPreferences 인스턴스를 사용하여 평점을 저장할 수 있습니다:

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

void saveMovieRating(String movieTitle, double rating) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setDouble(movieTitle, rating);
}

위의 코드는 saveMovieRating 함수를 정의하고, SharedPreferences 인스턴스를 얻은 후 setDouble 메서드를 사용하여 영화 제목을 키로, 평점을 값으로 저장합니다.

3. 저장된 평점 불러오기

이제 저장된 평점을 불러오는 코드를 작성해보겠습니다. 다음과 같이 SharedPreferences 인스턴스를 사용하여 평점을 불러올 수 있습니다:

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

Future<double> getMovieRating(String movieTitle) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getDouble(movieTitle) ?? 0.0;
}

위의 코드는 getMovieRating 함수를 정의하고, SharedPreferences 인스턴스를 얻은 후 getDouble 메서드를 사용하여 저장된 평점을 불러옵니다. 만약 저장된 평점이 없을 경우 0.0을 반환합니다.

4. 예제 사용

이제 작성된 함수를 사용하여 사용자가 본 영화의 평점을 저장하고 불러올 수 있습니다. 예제 코드는 다음과 같습니다:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Movie Ratings'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                child: Text('Save Movie Rating'),
                onPressed: () {
                  saveMovieRating('Inception', 4.5);
                },
              ),
              ElevatedButton(
                child: Text('Get Movie Rating'),
                onPressed: () async {
                  double rating = await getMovieRating('Inception');
                  print('Movie rating: $rating');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

위의 예제에서는 ‘Inception’ 영화의 평점을 저장하고 불러오는 버튼이 구현되어 있습니다. 사용자가 ‘Save Movie Rating’ 버튼을 누르면 4.5 평점이 저장되고, ‘Get Movie Rating’ 버튼을 누르면 해당 평점이 출력됩니다.

이제 위의 예제 코드를 실행해보면 사용자가 본 영화의 평점을 저장하고 불러올 수 있는 기능을 확인할 수 있습니다.

참고 자료