[flutter] shared_preferences 를 사용하여 사용자의 마지막 로그인 일시를 저장하는 방법은 무엇인가요?

이 문서에서는 Flutter 앱에서 shared_preferences 패키지를 사용하여 사용자의 마지막 로그인 일시를 저장하는 방법에 대해 설명합니다.

shared_preferences는 Flutter에서 로컬 데이터를 간단하게 저장하고 검색하기 위한 패키지입니다. 이 패키지를 사용하여 사용자의 마지막 로그인 일시를 디바이스에 저장할 수 있습니다.

1. shared_preferences 추가하기

먼저, shared_preferences 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고 다음과 같이 패키지를 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

이후 터미널에서 flutter packages get 명령을 실행하여 패키지를 가져옵니다.

2. shared_preferences 초기화하기

앱 시작 시점에서 shared_preferences를 초기화해야 합니다. 이 작업은 주로 앱 초기화를 담당하는 main() 함수에서 수행됩니다.

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // shared_preferences 초기화
  SharedPreferences prefs = await SharedPreferences.getInstance();

  runApp(MyApp());
}

3. 로그인 일시 저장하기

로그인 성공 시, 마지막 로그인 일시를 shared_preferences에 저장합니다. 이렇게 하면 앱을 다시 시작하더라도 마지막 로그인 일시를 복원할 수 있습니다.

import 'package:shared_preferences/shared_preferences.dart';

// 로그인 성공 시 호출되는 함수
void saveLastLoginTime() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();

  DateTime now = DateTime.now();
  String formattedTime = now.toIso8601String();

  // 마지막 로그인 일시 저장
  await prefs.setString('last_login_time', formattedTime);
}

4. 저장된 로그인 일시 불러오기

마지막 로그인 일시를 표시하려면 shared_preferences에서 저장된 값을 가져와야 합니다. 예를 들어, 홈 화면에서 마지막 로그인 일시를 표시하려면 다음과 같이 코드를 작성할 수 있습니다.

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

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String lastLoginTime = '';

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

  void getLastLoginTime() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    String savedTime = prefs.getString('last_login_time');
    setState(() {
      lastLoginTime = savedTime ?? '로그인 이력이 없습니다.';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('홈'),
      ),
      body: Center(
        child: Text('마지막 로그인 일시: $lastLoginTime'),
      ),
    );
  }
}

이제 앱을 실행하고 로그인 후 홈 화면으로 이동하면 마지막 로그인 일시가 표시됩니다.

이것이 Flutter에서 shared_preferences를 사용하여 사용자의 마지막 로그인 일시를 저장하는 방법입니다. 이 기능을 사용하면 앱이 재시작되더라도 사용자의 로그인 이력을 유지할 수 있습니다.

참고 자료: