fromMap을 사용해 map데이터 쉽게 사용하기

2024. 9. 19. 10:41·Flutter/Dart

내가 쓰는 모델 중에 fromMap 이라는 코드가 있다. Map 데이터를 객체로 변환하는데, 이게 무슨말일까?

 

fromMap은 Map형식의 데이터를 객체로 바꿔주는 함수다. Map은 key와 value로 데이터를 저장하는 방식인데, fromMap은 이 데이터를 클래스에 맞게 변환해준다.

예를 들어, 서버에서 받은 아이의 정보가 아래처럼 있다면:

{ 'id': '123', 'name': '아이 이름', 'photoUrl': 'https://photo.com' }


fromMap을 사용해 이 데이터를 Child라는 객체로 변환하고, 그 후에는 child.name, child.id 로 접근해 데이터를 쉽게 사용할 수 있게 된다.

 

코드를 보며 사용해보자.

- models/child.dart 

class Child {
  final String id;
  final String name;
  final String photoUrl;

  Child({
    required this.id,
    required this.name,
    required this.photoUrl,
  });

  // fromMap: Map 데이터를 Child 객체로 변환
  factory Child.fromMap(Map<String, dynamic> map) {
    return Child(
      id: map['id'] ?? '',
      name: map['name'] ?? '',
      photoUrl: map['photoUrl'] ?? '',
    );
  }

  // toMap: Child 객체를 다시 Map으로 변환
  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'name': name,
      'photoUrl': photoUrl,
    };
  }
}

 

  • fromMap은 Map 데이터를 클래스 객체로 변환하는 생성자다. 주로 데이터베이스나 서버에서 받은 데이터를 앱에서 사용하는 객체로 바꿀 때 쓰인다.
  • 이 코드에서는 아이(Child) 정보가 Firestore나 API에서 Map 형태로 제공될 때, 이를 Child 객체로 변환하는 데 사용된다.

만약 서버에서 데이터를 이렇게 받았다면

{
  'id': '123',
  'name': '아이 이름',
  'photoUrl': 'https://photo.com'
}

 

 

면 이런식으로 만들고

Map<String, dynamic> childData = {
  'id': '123',
  'name': '아이 이름',
  'photoUrl': 'https://photo.com'
};


fromMap을 사용하여 이를 Child 객체로 바꾸면, 이렇게 된다:

Child child = Child.fromMap(childData);


이제 child.name, child.photoUrl과 같이 객체의 필드로 데이터에 접근할 수 있다. 

 

 

'Flutter > Dart' 카테고리의 다른 글

static GetIt get instance => _instance; <-- 여기에 쓰인 문법을 모두 설명해보세요.  (0) 2024.10.14
멤버 변수 vs 상태  (0) 2024.10.14
Stream, Future 둘의 차이점은 뭐지?  (2) 2024.08.12
Enum이 뭐고, Enhanced Enum은 왜 쓸까?  (0) 2024.08.12
Call by Reference, Call by Value, 깊은 복사, 얕은 복사 in Dart  (2) 2024.08.07
'Flutter/Dart' 카테고리의 다른 글
  • static GetIt get instance => _instance; <-- 여기에 쓰인 문법을 모두 설명해보세요.
  • 멤버 변수 vs 상태
  • Stream, Future 둘의 차이점은 뭐지?
  • Enum이 뭐고, Enhanced Enum은 왜 쓸까?
복복씨
복복씨
  • 복복씨
    정리노트
    복복씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (113)
      • 개발새발자 (20)
        • 의 삶 (6)
        • 의 회고 (9)
        • 의 낙서장 (5)
        • 영어 (0)
      • Flutter (4)
        • 새싹 (5)
        • Dart (8)
        • Flutter (13)
        • iOS 에서 Flutter 로 전환하며 (2)
        • 챗지피티랑놀.기 (2)
        • 하루 한 입 플러터 (1)
      • CS (7)
        • 짤막지식 (6)
      • IOS (6)
        • Swift (0)
        • UIKit (1)
        • SwitUI (4)
      • 머신러닝-딥러닝 (28)
        • 논문리뷰 (3)
        • study (16)
        • Kaggle (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter Lifecycle
    사그널링서버
    부트캠프 떠돌이
    깊은참조
    initState()
    IOS
    핫 리로드
    dart
    용산캠
    새싹
    getit
    부트캠프
    새싹 용산
    테킷 앱스쿨
    정말 최고의 유튜바
    FLUTTER
    flutter lottie
    시그널링데이터
    코드 결합도
    flutter 애니메이션
    swiftui 플러터
    새싹 플러터
    한주 회고
    플러터
    멋쟁이 사자처럼
    테킷
    플러터 di
    iOS 개발자
    플러터 새싹
    왜 글쓸 때랑 글쓴 후랑 코드 색감이 다르게 나오지?
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
복복씨
fromMap을 사용해 map데이터 쉽게 사용하기
상단으로

티스토리툴바