[flutter] 플러터에서 Equatable 클래스를 사용한 데이터 저장 및 로딩

플러터 앱을 개발할 때 일반적으로 데이터 저장 및 로딩의 필요성을 느낍니다. Equatable 클래스를 활용하면 데이터의 동등성 비교를 쉽게 할 수 있습니다. 이번 포스트에서는 플러터에서 Equatable 클래스를 사용하여 데이터 모델을 만들고, SharedPreferences를 통해 데이터를 저장하고 로딩하는 방법에 대해 알아보겠습니다.

Equatable 클래스란?

Equatable은 플러터 패키지에서 제공하는 클래스로, 객체의 동등성(Equality)을 비교할 때 사용됩니다. Equatable 클래스를 활용하면 == 연산자를 오버라이딩하여 두 객체의 속성을 비교할 수 있습니다. 이를 통해 더 쉽고 간편하게 객체 간의 동등성을 확인할 수 있습니다. 뿐만 아니라 Equatable 클래스를 사용하면 플러터의 CollectionListSet에서의 동작도 보다 효율적으로 관리할 수 있습니다.

Equatable 클래스를 활용한 데이터 모델 생성

Equatable 클래스를 활용하여 데이터 모델을 생성하는 예시를 살펴보겠습니다. 아래는 사용자 정보를 담는 User 모델의 예시입니다.

import 'package:equatable/equatable.dart';

class User extends Equatable {
  final String name;
  final String email;

  User({required this.name, required this.email});

  @override
  List<Object> get props => [name, email];
}

위의 코드에서 Equatable 클래스를 확장하여 User 모델을 생성했습니다. Equatable 클래스를 상속하고 props 리스트에 비교할 속성들을 나열합니다.

SharedPreferences를 사용하여 데이터 저장 및 로딩

Equatable 클래스를 사용한 User 모델 데이터를 SharedPreferences를 통해 저장하고 로딩하는 방법을 살펴보겠습니다. 아래는 SharedPreferences를 사용하여 User 데이터를 저장하고 로딩하는 예시 코드입니다.

import 'package:shared_preferences/shared_preferences.dart';

class UserPreferences {
  static late SharedPreferences _preferences;

  static const _keyUserName = 'username';
  static const _keyUserEmail = 'useremail';

  static Future init() async {
    _preferences = await SharedPreferences.getInstance();
  }

  static User getUser() {
    final name = _preferences.getString(_keyUserName) ?? '';
    final email = _preferences.getString(_keyUserEmail) ?? '';

    return User(name: name, email: email);
  }

  static void setUser(User user) {
    _preferences.setString(_keyUserName, user.name);
    _preferences.setString(_keyUserEmail, user.email);
  }
}

위의 코드에서는 UserPreferences 클래스를 만들어 SharedPreferences를 사용하여 User 데이터를 저장하고 로딩하는 기능을 구현했습니다. UserPreferences 클래스는 각각의 속성에 대한 키값을 지정하고, getUser 및 setUser 메서드를 통해 데이터를 가져오고 설정합니다.

Equatable 클래스를 사용하면 동등성 비교를 쉽게 할 수 있으며, SharedPreferences를 사용하여 데이터를 저장하고 로딩하는 과정을 효율적으로 할 수 있습니다. 위의 예시를 참고하여 Equatable 클래스를 사용한 데이터 저장 및 로딩 방법을 활용하여 플러터 앱을 보다 효율적으로 구현해보세요.

참고 자료