[flutter] shared_preferences 를 사용하여 사용자가 선택한 저장소 위치를 저장하는 방법은 무엇인가요?

Flutter에서는 shared_preferences 패키지를 사용하여 간단하게 사용자 설정을 저장 및 관리할 수 있습니다. 이를 활용하여 사용자가 선택한 저장소 위치를 저장할 수 있습니다.

먼저, shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일의 dependencies 섹션에 다음을 추가해주세요:

dependencies:
  shared_preferences: ^2.0.6

그런 다음, 다음 코드를 사용하여 사용자가 선택한 저장소 위치를 저장합니다:

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

class StorageSettingsPage extends StatefulWidget {
  @override
  _StorageSettingsPageState createState() => _StorageSettingsPageState();
}

class _StorageSettingsPageState extends State<StorageSettingsPage> {
  String _selectedStorageLocation = '';

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

  Future<void> _getSelectedStorageLocation() async {
    final prefs = await SharedPreferences.getInstance();
    setState(() {
      _selectedStorageLocation =
          prefs.getString('selectedStorageLocation') ?? '';
    });
  }

  Future<void> _saveSelectedStorageLocation(String location) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString('selectedStorageLocation', location);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('저장소 설정'),
      ),
      body: Column(
        children: [
          ListTile(
            title: Text('내부 저장소'),
            trailing: Radio<String>(
              value: 'internal',
              groupValue: _selectedStorageLocation,
              onChanged: (String value) {
                setState(() {
                  _selectedStorageLocation = value;
                });
                _saveSelectedStorageLocation(value);
              },
            ),
          ),
          ListTile(
            title: Text('외부 저장소'),
            trailing: Radio<String>(
              value: 'external',
              groupValue: _selectedStorageLocation,
              onChanged: (String value) {
                setState(() {
                  _selectedStorageLocation = value;
                });
                _saveSelectedStorageLocation(value);
              },
            ),
          ),
        ],
      ),
    );
  }
}

이 코드는 StorageSettingsPage라고 불리는 위젯을 정의합니다. 이 위젯은 사용자에게 내부 저장소와 외부 저장소 중 하나를 선택할 수 있는 라디오 버튼을 제공합니다. 사용자가 저장소 위치를 선택하면 _saveSelectedStorageLocation 함수가 호출되어 선택한 위치를 shared_preferences를 통해 저장합니다. 이를 통해 다음에 앱이 실행될 때마다 저장한 위치를 불러올 수 있습니다.

위와 같은 방식으로 Flutter에서 사용자가 선택한 저장소 위치를 저장하고 관리할 수 있습니다. 유저에게 편리한 설정 기능을 제공하고, 해당 설정을 유지하며 앱을 개발할 수 있습니다.