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은 왜 쓸까?
복복씨
복복씨
개발자여, 사고하라 !
  • 복복씨
    정리노트
    복복씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (118)
      • 개발새발자 (21)
        • 의 삶 (7)
        • 의 회고 (9)
        • 의 낙서장 (5)
        • 영어 (0)
      • FrontEnd (1)
        • React (1)
      • Flutter (38)
        • 새싹 (5)
        • Dart (8)
        • Flutter (14)
        • iOS 에서 Flutter 로 전환하며 (2)
        • 챗지피티랑놀.기 (3)
        • 하루 한 입 플러터 (2)
      • CS (7)
        • 짤막지식 (6)
      • IOS (6)
        • Swift (0)
        • UIKit (1)
        • SwitUI (4)
      • 머신러닝-딥러닝 (28)
        • 논문리뷰 (3)
        • study (16)
        • Kaggle (9)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    플러터
    플러터 새싹
    swiftui 플러터
    Flutter Lifecycle
    initState()
    runzonedguarded
    futurerecord2
    새싹 플러터
    getit
    플러터 di
    사그널링서버
    새싹 용산
    unawaited
    부트캠프
    schedulemicrotask
    flutter 애니메이션
    용산캠
    IOS
    dart
    FLUTTER
    테킷 앱스쿨
    핫 리로드
    깊은참조
    expando
    한주 회고
    새싹
    멋쟁이 사자처럼
    코드 결합도
    시그널링데이터
    flutter lottie
  • 최근 댓글

  • 최근 글

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

티스토리툴바