[flutter] 플러터에서 Equatable을 이용한 객체 정렬하기

플러터(Flutter)에서 객체를 정렬할 때 Equatable을 사용하면 편리한 기능을 제공받을 수 있습니다. Equatable은 객체의 내부 속성을 비교하여 두 객체가 동일한지 여부를 판단할 수 있는 방법을 제공하며, 리스트나 맵과 같은 컬렉션을 정렬할 때 유용합니다. 이번 포스트에서는 Equatable을 이용하여 객체를 정렬하는 방법을 알아보겠습니다.

Equatable이란?

Equatable은 객체의 값이 동일한지 비교할 수 있는 방법을 제공하는 플러터 패키지입니다. Equatable을 사용하면 == 연산자를 오버라이드하여 객체의 내부 속성을 비교할 수 있으며, hashCode 메서드도 제공하여 동일한 객체는 동일한 해시코드를 가지도록 할 수 있습니다.

Equatable을 이용한 객체 정렬 방법

먼저 Equatable 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 의존성을 추가해 주세요.

dependencies:
  equatable: ^2.0.2

그리고 아래와 같이 Equatable을 임포트해 주세요.

import 'package:equatable/equatable.dart';

이제 Equatable을 사용하여 객체를 정의해 보겠습니다.

class Person extends Equatable {
  final String name;
  final int age;

  const Person({required this.name, required this.age});

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

위의 코드에서 Equatable을 상속받은 Person 클래스를 정의하였습니다. props 메서드를 오버라이드하여 비교할 속성을 지정해 주었습니다.

이제 Person 객체를 정렬해 보겠습니다.

void main() {
  final List<Person> persons = [
    Person(name: 'Alice', age: 25),
    Person(name: 'Bob', age: 30),
    Person(name: 'Charlie', age: 20),
  ];

  persons.sort();

  for (var person in persons) {
    print('${person.name} - ${person.age}');
  }
}

위의 코드에서 persons 리스트를 sort 메서드로 정렬하였습니다. Equatable을 이용하면 sort 메서드를 호출할 때 자동으로 == 연산자가 호출되어 객체가 정렬됩니다.

이제 Equatable을 이용하여 객체를 정렬하는 방법에 대해 알아보았습니다. Equatable을 사용하면 객체를 비교하고 정렬하는 작업이 편리해집니다.

더 자세한 정보는 Equatable 공식 문서를 참고해 주세요.

관련 포스트: 플러터에서 상태 관리하기

목차: