아래와 같은 dblist
Map이 있다고 하면,
Map<int, List<dynamic>> dblist = {
0: [1, '가', 8, '나'],
1: [2, '마', 4, '바'],
2: [6, '자', 1, '치'],
};
Map의 구성은 아래와 같다.
print(dblist);
//console >> {0: [1, 가, 8, 나], 1: [2, 마, 4, 바], 2: [6, 자, 1, 치]}
정렬을 위해 Key
값을 리스트로 추출하는 방법은 아래와 같다.
// 키 값을 리스트로 추출
var sortedKeys = dblist.keys.toList(growable: false);
print(sortedKeys);
//console >> [0, 1, 2]
LinkedHashMap
사용을 위해서는 collection
패키지를 import 해야한다.
import 'dart:collection';
추출한 키값을 원하는 정렬기준(sortbyColumn
)으로 정렬한 뒤, LinkedHashMap
으로 다시 정렬된 Key
값 기준으로 Map을 구성해 준다. 전체 코드는 아래와 같다.
datasrot(int sortbyColumn, {bool descending = true}) {
// 키 값을 리스트로 추출
var sortedKeys = dblist.keys.toList(growable: false);
// sortbyColumn을 기준으로 key값을 정렬
if (descending) {
sortedKeys.sort(
(k1, k2) =>
dblist[k1]![sortbyColumn].compareTo(dblist[k2]![sortbyColumn]),
);
} else {
sortedKeys.sort(
(k2, k1) =>
dblist[k2]![sortbyColumn].compareTo(dblist[k1]![sortbyColumn]),
);
}
//정렬된 키값을 기준으로 다시 Map을 작성
LinkedHashMap<int, List<dynamic>> sortedMap = LinkedHashMap.fromIterable(
sortedKeys,
key: (k) => k,
value: (k) => dblist[k]!);
print(sortedMap);
//descending applied
//console >> {2: [6, 자, 1, 치], 1: [2, 마, 4, 바], 0: [1, 가, 8, 나]}
dblist = sortedMap;
print(dblist);
//console >> {2: [6, 자, 1, 치], 1: [2, 마, 4, 바], 0: [1, 가, 8, 나]}
}
끝.
'Dead Code > Flutter_Dart' 카테고리의 다른 글
[플러터] SearchBar Widget 사용하기 (0) | 2023.07.25 |
---|---|
[플러터] Sheets로 이미지 URL의 EXIF 정보 얻어내기 (0) | 2023.07.24 |
[플러터] 심플 애니메이션 (0) | 2023.07.20 |
[플러터] minSdkVersion 위치 (0) | 2023.07.18 |
[다트] 리스트 중복 제거 (0) | 2023.07.14 |
[플러터] 구글 Sheets 를 DB로 사용해서 갤러리 만들기 #2 (0) | 2023.07.12 |
[플러터] .json theme 파일사용하기 (0) | 2023.07.11 |
[플러터] widget : Wrap (0) | 2023.07.06 |
[플러터] package : fluttertoast (0) | 2023.06.26 |
[다트] dart 3.0 - records 괄호 지옥 (0) | 2023.05.26 |