말랑말랑제리스타일
Flutter 객체 List 중복 제거하는 방법(Dart) 본문
Flutter를 쓰다보면 상당히 유용한 기능이 많은데요. 기본적으로 Dart 언어에서는 List 중복 제거는 지원하지 않는 것 같습니다. 그렇기 때문에 다양한 방법론들이 돌고 있는데 아마 Flutter에서 객체로 만든 List의 경우는 이 방법이 최선의 중복제거일 것 같네요.
Flutter 객체 List의 중복 제거에 사용되는 메서드
Flutter의 객체 List에서 중복 제거를 하기 위한 Dart의 기본메서드는 아래 두가지입니다.
List.removeWhere()
List.firstWhere()
원리는 Dart의 firstWhere을 이용해서 이 항목이 해당 조건의 첫번째 항목인지 여부를 확인하고 removeWhere 메서드를 이용해 아닌건 전부 삭제되도록 하는겁니다.
Flutter 에서 객체 List 제거 전체 소스
일단 전체 소스라고 해봐도 실제로 동작 구현은 한줄로 되는거고 Dart Pad에서 실행시키기 위해 리스트나 클래스 구현 부분이 대부분입니다.
class testClass{
final int key;
final String data;
const testClass(this.key,this.data);
}
void main() {
List<testClass> list = [testClass(1,'t1'),
testClass(2,'t2'),
testClass(3,'t3'),
testClass(1,'t4'),
testClass(2,'t5'),
testClass(4,'t6'),
testClass(1,'t4')
];
print('original list');
for (int i = 0; i < list.length; i++) {
print(list[i].key.toString() + " " + list[i].data);
}
list.removeWhere((a) => a != list.firstWhere((b) => b.key == a.key ));
print('distinct list');
for (int i = 0; i < list.length; i++) {
print(list[i].key.toString() + " " + list[i].data);
}
}
testClass라는 클래스를 생성해주고 list라는 객체 List를 생성해줍니다.
original list로 출력하면 들어간 값들이 전부 출력되는데요.
여기서 중복 제거를 위해서 그 다음줄의 list.removeWhere((a) => a != list.firstWhere((b) => b.key == a.key )); 메서드를 사용해줄 수 있습니다.
저같은 경우 클래스에 key와 String 타입의 값을 넣은 객체를 만들었는데요.
해당 객체가 key 값이 있는 첫번째 값이 아니면 날려주는거죠.
그럼 남는 데이터는 해당 key의 앞쪽에 있는 데이터만 남게 됩니다.
이런 결과가 나오게 되는거죠.
만약 여기서 Data 값이 가장 작은걸 남기려면 sort 메서드를 이용해 사전에 객체 list를 정렬해주면 되겠죠.
'프로그래밍 > 플러터 앱개발' 카테고리의 다른 글
플러터 크롬에서 List View 스크롤 안되는 문제 해결 방법 (0) | 2023.04.17 |
---|---|
플러터 설치 및 환경변수 안건드리고 개발환경 세팅하기 (0) | 2023.04.04 |
플러터 CupertinoPageScaffold 가려지는 현상 (0) | 2022.11.03 |
플러터 에러 Cannot run with sound null safety 처리 방법 (0) | 2022.11.03 |
플러터에서 List 사용시 발생하는 에러 (0) | 2022.10.28 |