1.사용자 정보 관리
Map<String, dynamic> userInfo = {
'name': '김철수',
'age': 25,
'email': 'kim@example.com',
'isActive': true,
};
// 접근 및 수정
print(userInfo['name']); // 김철수
userInfo['age'] = 26;
2.캐시 또는 메모이제이션
Map<String, dynamic> cache = {};
dynamic expensiveOperation(String key) {
if (cache.containsKey(key)) {
return cache[key];
}
// 계산 로직...
final result = someExpensiveCalculation();
cache[key] = result;
return result;
}
3.상태 관리
enum OrderStatus { pending, processing, shipped, delivered }
Map<String, OrderStatus> orderStatuses = {
'ORDER001': OrderStatus.pending,
'ORDER002': OrderStatus.shipped,
};
// 주문 상태 업데이트
void updateOrderStatus(String orderId, OrderStatus newStatus) {
orderStatuses[orderId] = newStatus;
}
4.다국어 지원
Map<String, Map<String, String>> translations = {
'en': {
'greeting': 'Hello',
'farewell': 'Goodbye'
},
'ko': {
'greeting': '안녕하세요',
'farewell': '안녕히 가세요'
}
};
String translate(String language, String key) {
return translations[language]?[key] ?? 'Translation not found';
}
5.점수 기록
Map<String, int> scores = {};
void updateScore(String playerName, int points) {
scores[playerName] = (scores[playerName] ?? 0) + points;
}
// 상위 점수 가져오기
List<MapEntry<String, int>> getTopScores() {
var sortedEntries = scores.entries.toList()
..sort((a, b) => b.value.compareTo(a.value));
return sortedEntries.take(3).toList();
}
6.설정 관리
Map<String, dynamic> appSettings = {
'darkMode': true,
'fontSize': 16,
'notifications': {
'email': true,
'push': false,
'sound': true
}
};
// 중첩된 설정 접근
bool isPushEnabled = appSettings['notifications']['push'];
7.이벤트 핸들러 관리
Map<String, Function(dynamic)> eventHandlers = {
'click': (data) => print('Clicked: $data'),
'hover': (data) => print('Hover: $data'),
'submit': (data) => print('Submitted: $data'),
};
void handleEvent(String eventType, dynamic data) {
eventHandlers[eventType]?.call(data);
}
8.에러 코드 매핑
Map<int, String> errorMessages = {
404: '페이지를 찾을 수 없습니다.',
500: '서버 오류가 발생했습니다.',
403: '접근이 거부되었습니다.',
};
String getErrorMessage(int code) {
return errorMessages[code] ?? '알 수 없는 오류가 발생했습니다.';
}
-Map의 유용한 메서드들
final Map<String, int> numbers = {'one': 1, 'two': 2, 'three': 3};
// 키/값 존재 확인
print(numbers.containsKey('one')); // true
print(numbers.containsValue(4)); // false
// 모든 키/값 가져오기
print(numbers.keys); // (one, two, three)
print(numbers.values); // (1, 2, 3)
// 항목 추가/제거
numbers.addAll({'four': 4, 'five': 5});
numbers.remove('one');
// Map 변환
final doubled = numbers.map((key, value) =>
MapEntry(key, value * 2));
// 조건부 삭제
numbers.removeWhere((key, value) => value > 2);
'Flutter' 카테고리의 다른 글
Flutter Method Channel (0) | 2024.12.04 |
---|---|
Flutter SQLite 라이브러리 사용법 (0) | 2024.12.03 |
댓글