[flutter] shared_preferences 를 사용하여 사용자가 마케팅 메일 수신 여부를 저장하는 방법은 무엇인가요?

마케팅 메일 수신 여부를 저장하기 위해 Flutter에서는 shared_preferences라는 패키지를 사용할 수 있습니다. 이 패키지를 사용하면 앱 내에 간단한 데이터를 지속적으로 저장하고 불러올 수 있습니다.

shared_preferences 패키지 추가하기

먼저, shared_preferences 패키지를 사용하기 위해 pubspec.yaml 파일에 의존성을 추가해야 합니다. 아래의 코드를 dependencies 섹션에 추가하세요.

dependencies:
  flutter:
    sdk: flutter

  shared_preferences: ^2.0.6

의존성을 추가한 후에는 터미널에서 flutter packages get 명령어를 실행하여 패키지를 다운로드받아주세요.

데이터 저장하기

마케팅 메일 수신 여부를 저장하기 위해서는 SharedPreferences 인스턴스를 생성하고 값을 저장해야 합니다. 아래의 예시 코드를 참고하여 구현해보세요.

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

class MyCheckbox extends StatefulWidget {
  @override
  _MyCheckboxState createState() => _MyCheckboxState();
}

class _MyCheckboxState extends State<MyCheckbox> {
  bool isChecked = false;

  @override
  void initState() {
    super.initState();
    loadCheckboxState();
  }

  Future<void> loadCheckboxState() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    bool savedValue = prefs.getBool('marketing_mail') ?? false;
    setState(() {
      isChecked = savedValue;
    });
  }

  Future<void> saveCheckboxState(bool value) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setBool('marketing_mail', value);
  }

  @override
  Widget build(BuildContext context) {
    return Checkbox(
      value: isChecked,
      onChanged: (bool value) {
        setState(() {
          isChecked = value;
        });
        saveCheckboxState(value);
      },
    );
  }
}

위의 예시 코드에서 SharedPreferences.getInstance()를 호출하여 SharedPreferences의 인스턴스를 얻습니다. setBool() 함수를 사용하여 marketing_mail이라는 키로 데이터를 저장하고, getBool() 함수를 사용하여 저장된 데이터를 불러옵니다. 이렇게 불러온 값을 setState() 함수를 사용하여 상태를 업데이트하고, 체크박스의 상태에 따라 데이터를 저장합니다.

데이터 불러오기

저장된 마케팅 메일 수신 여부 데이터를 불러오기 위해서는 SharedPreferences의 인스턴스를 생성하고 getBool() 함수를 호출하면 됩니다. 아래의 예시 코드를 참고하여 데이터를 불러오세요.

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

class MyPage extends StatefulWidget {
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  bool isChecked = false;

  @override
  void initState() {
    super.initState();
    loadCheckboxState();
  }

  Future<void> loadCheckboxState() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    bool savedValue = prefs.getBool('marketing_mail') ?? false;
    setState(() {
      isChecked = savedValue;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text('마케팅 메일 수신 여부: $isChecked');
  }
}

위의 예시 코드에서는 불러온 데이터를 isChecked 변수에 저장하고 UI에 출력하는 간단한 예시입니다. 실제로는 데이터를 사용하는 적절한 화면에 위 코드를 적용하여 데이터를 불러오세요.

마케팅 메일 수신 여부를 사용자화면에서 수정할 수 있는 UI와 함께 SharedPreferences를 사용하면 간단하게 데이터를 저장하고 불러올 수 있습니다.