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

Flutter에서는 shared_preferences 패키지를 사용하여 기기에 간단한 데이터를 저장하고 검색할 수 있습니다. 이를 활용하여 사용자가 선택한 쿠키 설정을 저장하는 방법에 대해 알아보겠습니다.

1. shared_preferences 패키지 추가하기

먼저, pubspec.yaml 파일에 shared_preferences 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

pubspec.yaml 파일을 저장한 후, 패키지를 다운로드하기 위해 터미널에서 flutter pub get 명령을 실행합니다.

2. 쿠키 설정 저장하기

이제, 사용자가 선택한 쿠키 설정을 shared_preferences를 통해 기기에 저장하는 코드를 작성해보겠습니다.

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

class CookieSettingsPage extends StatefulWidget {
  @override
  _CookieSettingsPageState createState() => _CookieSettingsPageState();
}

class _CookieSettingsPageState extends State<CookieSettingsPage> {
  bool _useCookies = true; // 쿠키 사용 여부의 기본값

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

  Future<void> _getCookieSettings() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    bool useCookies = prefs.getBool('useCookies') ?? _useCookies;
    setState(() {
      _useCookies = useCookies;
    });
  }

  Future<void> _setCookieSettings(bool value) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setBool('useCookies', value);
    setState(() {
      _useCookies = value;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('쿠키 설정'),
      ),
      body: ListView(
        children: [
          SwitchListTile(
            title: Text('쿠키 사용'),
            value: _useCookies,
            onChanged: _setCookieSettings,
          ),
        ],
      ),
    );
  }
}

위의 코드는 CookieSettingsPage라는 StatefulWidget을 정의한 것입니다. 이 페이지는 스위치 위젯을 사용하여 사용자가 쿠키를 사용할지 여부를 설정할 수 있도록 합니다. shared_preferences를 사용하여 사용자 설정을 기기의 로컬 저장소에 저장하고 검색합니다. 설정 변경 시에도 변경된 값을 실시간으로 업데이트합니다.

3. 쿠키 설정 페이지 사용하기

쿠키 설정 페이지를 사용하려면 해당 페이지를 다른 페이지에서 호출하면 됩니다. 아래는 예시 코드입니다.

import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('홈'),
      ),
      body: Center(
        child: ElevatedButton(
          child: Text('쿠키 설정'),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => CookieSettingsPage()),
            );
          },
        ),
      ),
    );
  }
}

위의 코드에서는 HomePage에서 Navigator.push를 사용하여 CookieSettingsPage로 이동할 수 있도록 하였습니다.

이제 사용자가 쿠키 설정을 변경하면 그 값을 기기에 저장할 수 있습니다. 이 설정은 애플리케이션을 재실행해도 계속 유지됩니다.

참고: 위의 코드는 예시를 위한 기본적인 코드이므로, 실제 애플리케이션에 사용될 경우 추가적인 예외 처리와 적절한 UI 개선이 필요할 수 있습니다.

결론

Flutter에서 shared_preferences 패키지를 사용하여 사용자가 선택한 쿠키 설정을 저장하는 방법에 대해 알아보았습니다. 이를 통해 간단한 데이터를 기기에 저장하고 관리할 수 있으며, 사용자 경험을 개선할 수 있습니다.

참고 자료