플러터 앱을 개발할 때 일반적으로 데이터 저장 및 로딩의 필요성을 느낍니다. Equatable 클래스를 활용하면 데이터의 동등성 비교를 쉽게 할 수 있습니다. 이번 포스트에서는 플러터에서 Equatable 클래스를 사용하여 데이터 모델을 만들고, SharedPreferences를 통해 데이터를 저장하고 로딩하는 방법에 대해 알아보겠습니다.
Equatable 클래스란?
Equatable은 플러터 패키지에서 제공하는 클래스로, 객체의 동등성(Equality)을 비교할 때 사용됩니다. Equatable 클래스를 활용하면 ==
연산자를 오버라이딩하여 두 객체의 속성을 비교할 수 있습니다. 이를 통해 더 쉽고 간편하게 객체 간의 동등성을 확인할 수 있습니다. 뿐만 아니라 Equatable 클래스를 사용하면 플러터의 Collection
인 List
나 Set
에서의 동작도 보다 효율적으로 관리할 수 있습니다.
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 클래스를 사용한 데이터 저장 및 로딩 방법을 활용하여 플러터 앱을 보다 효율적으로 구현해보세요.