[flutter] shared_preferences를 활용하여 사용자가 선택한 로그아웃 시간을 변경하는 방법은?

앱의 로그아웃 시간을 저장하기 위해 shared_preferences를 사용할 수 있습니다. shared_preferences는 키-값 저장소로써 간단한 데이터를 안전하게 저장할 수 있습니다.

다음은 shared_preferences를 사용하여 사용자가 선택한 로그아웃 시간을 저장하는 방법입니다.

  1. 의존성 추가: pubspec.yaml 파일에 shared_preferences 패키지를 추가합니다.
     dependencies:
       shared_preferences: ^2.0.6
    
  2. 코드 작성: 아래 코드는 shared_preferences를 사용하여 로그아웃 시간을 저장하고 가져오는 예제입니다.
     import 'package:flutter/material.dart';
     import 'package:shared_preferences/shared_preferences.dart';
    
     void main() {
       runApp(MyApp());
     }
    
     class MyApp extends StatelessWidget {
       @override
       Widget build(BuildContext context) {
         return MaterialApp(
           home: MyHomePage(),
         );
       }
     }
    
     class MyHomePage extends StatefulWidget {
       @override
       _MyHomePageState createState() => _MyHomePageState();
     }
    
     class _MyHomePageState extends State<MyHomePage> {
       TextEditingController _controller = TextEditingController();
       late SharedPreferences _prefs;
       String _logoutTimeKey = 'logout_time';
    
       @override
       void initState() {
         super.initState();
         _initPreferences();
       }
    
       Future<void> _initPreferences() async {
         _prefs = await SharedPreferences.getInstance();
       }
    
       Future<void> _setLogoutTime() async {
         await _prefs.setString(_logoutTimeKey, _controller.text);
       }
    
       Future<String?> _getLogoutTime() async {
         return _prefs.getString(_logoutTimeKey);
       }
    
       @override
       Widget build(BuildContext context) {
         return Scaffold(
           appBar: AppBar(
             title: Text('Save Logout Time'),
           ),
           body: Center(
             child: Column(
               mainAxisAlignment: MainAxisAlignment.center,
               children: <Widget>[
                 TextField(
                   controller: _controller,
                   decoration: InputDecoration(labelText: 'Logout Time'),
                 ),
                 ElevatedButton(
                   onPressed: () {
                     _setLogoutTime();
                   },
                   child: Text('Save'),
                 ),
                 ElevatedButton(
                   onPressed: () async {
                     String? storedTime = await _getLogoutTime();
                     if (storedTime != null) {
                       showDialog(
                         context: context,
                         builder: (BuildContext context) {
                           return AlertDialog(
                             content: Text('Stored Logout Time: $storedTime'),
                           );
                         },
                       );
                     }
                   },
                   child: Text('Show Saved Time'),
                 ),
               ],
             ),
           ),
         );
       }
     }
    
  3. 저장 및 검색: SharedPreferences 인스턴스를 사용하여 로그아웃 시간을 저장하고 가져올 수 있습니다.

이제 사용자가 선택한 로그아웃 시간을 shared_preferences를 사용하여 저장하고 검색할 수 있습니다.