[Dart] List<Map<String, dynamic>> ==> List<MyBookModel> > Flutter/Dart/Node

본문 바로가기
사이트 내 전체검색

Flutter/Dart/Node

[Dart] List<Map<String, dynamic>> ==> List<MyBookMod…

페이지 정보

작성자 sbLAB 댓글 0건 조회 116회 작성일 23-01-16 17:54

본문

[Dart] List<Map<String, dynamic>>  ===>  List<MyBookModel>

※flutter Sqlite(sqflite 패키지)는 List<Map<String, dynamic>> 타입으로 기본 리턴되므로 List<데이타모델> 타입으로 변환필요.


 
  class MyBookModel {
    final int id;
    final String name;
    final int price;

    MyBookModel({required this.id, required this.name, required this.price});

    // MyBookModel Map으로 변환(DB사용 모델일 경우 key는 데이터베이스 컬럼 명과 동일)
    // Map<String, dynamic> toMap() {
    //   return {
    //     'id': id,
    //     'name': name,
    //     'price': price,
    //   };
    // }

    //factory
    factory MyBookModel.fromMaps(Map<String, dynamic> maps) {
      return MyBookModel(
          id: maps['id'], name: maps['name'], price: maps['price']);
    }
  }

  void main() {
    List<Map<String, dynamic>> myBooks = [
      {"id": 1, "name": "HTML and CSS", "price": 150},
      {"id": 2, "name": "Python", "price": 250},
      {"id": 3, "name": "Dart", "price": 120},
      {"id": 4, "name": "Java", "price": 100},
      {"id": 5, "name": "JavaScript", "price": 110},
    ];

    print('-------(1)------');
    // List<Map<String, dynamic>>를 List<MyBookModel>으로 변환 (1)
    var result = List.generate(myBooks.length, (i) {
      return MyBookModel(
        id: myBooks[i]['id'],
        name: myBooks[i]['name'],
        price: myBooks[i]['price'],
      );
    });

    print(result);

    for (var r in result) {
      print(r.name);
    }

    print('-------(2)------');
    // List<Map<String, dynamic>>를 List<MyBookModel>으로 변환 (2)
    var resultList = []; //  [] : List
    for (var item in myBooks) {
      resultList.add(MyBookModel(
        id: item['id'],
        name: item['name'],
        price: item['price'],
      ));
    }
    print(resultList);

    for (var r in resultList) {
      print(r.name);
    }

    print('-------(3)------');
    // List<Map<String, dynamic>>를 List<MyBookModel>으로 변환 (3) ★
    var resultList2 = []; //  [] : List
    for (var item in myBooks) {
      resultList2.add(MyBookModel.fromMaps(item));
    }
    print(resultList2);

    for (var r in resultList2) {
      print(r.name);
    }

    print('-------(4)------');
    // List<Map<String, dynamic>>를 List<MyBookModel>으로 변환 (4) ★★★
    var result2 = myBooks.map((i) => MyBookModel.fromMaps(i)).toList();
    print(result2);

    for (var r in result2) {
      print(r.name);
    }
  }
 


-------(1)------

[Instance of 'MyBookModel', ..., Instance of 'MyBookModel']

HTML and CSS

Python

Dart

Java

JavaScript

-------(2)------

[Instance of 'MyBookModel', ..., Instance of 'MyBookModel']

HTML and CSS

Python

Dart

Java

JavaScript

-------(3)------

[Instance of 'MyBookModel', ..., Instance of 'MyBookModel']

HTML and CSS

Python

Dart

Java

JavaScript

-------(4)------

[Instance of 'MyBookModel', ..., Instance of 'MyBookModel']

HTML and CSS

Python

Dart

Java

JavaScript





댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
280
어제
459
최대
576
전체
87,453

그누보드5
Copyright © sebom.com All rights reserved.