Flutter 數據模型創建


build_runner的使用
1、在根目錄運行
2、一次性創建.g.dart文件 使用build 此時目錄內不能有.g.dart文件
3、watch是監聽 有model類的文件創建 自動創建.g.dart文件
flutter packages pub run build_runner build
flutter packages pub run build_runner watch
dependencies:
  flutter:
    sdk: flutter

  json_annotation: ^1.2.0 #json_serializable助手

dev_dependencies:
  flutter_test:
    sdk: flutter

  build_runner: ^1.0.0  #創建.g.dart
  json_serializable: ^1.5.1  #序列化json

.dart文件

import 'package:json_annotation/json_annotation.dart';

part 'UserInfo.g.dart';
///標志class需要實現json序列化功能
@JsonSerializable()
///創建類Userinfo 繼承Object
///里面有兩個屬性 name和id
class UserInfo extends Object {
  String name;
  int id;

///通過JsonKey重新定義參數名
  @JsonKey(name: "details_id")
  int detailsId;

  /// 構造函數
  UserInfo(this.name, this.id, this.detailsId);

/// _$HomeModelFromJson 這個函數在.g.dart中,命名就是類名+FromJson
/// 直接寫就行 報錯也沒關系 生成.g.dart文件之后就好了
  factory UserInfo.fromJson(Map<String, dynamic> json) => _$UserInfoFromJson(json);
  
}

.g.dart文件
這個文件是build_runner生成的文件
創建完了IDE文件列表看不見,去文件目錄里面找。

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'UserInfo.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

UserInfo _$UserInfoFromJson(Map<String, dynamic> json) {
  return UserInfo(json['name'] as String, json['id'] as int);
}

Map<String, dynamic> _$UserInfoToJson(UserInfo instance) =>
    <String, dynamic>{'name': instance.name, 'id': instance.id};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM