Never give up

Flutter - Map get key by value 본문

Flutter

Flutter - Map get key by value

대기만성 개발자 2020. 9. 4. 19:51
반응형

Map에서 value를 이용해서 key를 가져와야될 상황이 생길때가 있습니다

 

이 부분은 Map의 메소드를 이용해서 간단하게 해결할 수 있습니다

 

먼저 사용한 데이터 타입은 key : DateTime, value : List<String>입니다

 

Map<DateTime, List<String>> _map = {
    DateTime.now().add(Duration(days: -3)): ['a', 'b', 'c'],
    DateTime.now().add(Duration(days: -2)): ['b', 'c'],
    DateTime.now().add(Duration(days: -1)): ['a'],
    DateTime.now(): ['b']
  };
  //값들은 임의로 넣었는데 실제로 날짜순으로 받고 있습니다
void setSelectedItems(String title) {
Iterable item = _map.keys.where((element) => _map[element].contains(title));

    Map<DateTime, List<String>> item = Map.fromIterable(item,
        key: (key) => key, value: (value) => [title]);
}

 

먼저 title 값을 받아서 key값을 찾을 때 where를 사용해서 Iterable 형태로 만들어 줍니다

 

만드는 과정에서 element를 찾을 때 contains를 사용하면 동일한 값이 있을 때 true를 반환되고

 

이를 이용해서 title값에 해당하는 key값을 가져옵니다

(예를들어 title값이 a이면 3일전, 1일전, 당일 날짜값이 반환됩니다)

 

필자의 경우 데이터를 넣는 순서가 날짜순이기 때문에 날짜 순서대로 key값이 정렬됩니다

(따로 정렬이 필요하면 추가로 작업을 해줘야될거 같습니다)

 

Iterable을 다시 동일한 데이터 타입의 Map 형태로 만들 때에는

 

Map.fromIterable을 이용해서 값과 value를 다시 설정해주시면 됩니다

 

반응형

'Flutter' 카테고리의 다른 글

Flutter - Webview with searchBar  (0) 2020.09.25
Flutter - how to use Icon Picker(save, load)  (0) 2020.09.18
Flutter - ReorderableListView  (0) 2020.08.12
Flutter - Store List in SQFLite  (0) 2020.08.07
Flutter - Scale example with GestureDetector  (0) 2020.08.05
Comments