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
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};