• 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};
  • 相关阅读:
    c++ 为自定义类添加stl遍历器风格的遍历方式
    C++ 生成随机数
    c/c++ 函数说明以及技巧总结
    XSLT 教程
    C# 高效过滤DataTable 中重复数据方法
    xml获取指定节点的路径
    TreeView控件
    推荐一些C#相关的网站、资源和书籍
    C#多线程操作
    C#二进制序列化
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/10274246.html
Copyright © 2020-2023  润新知