一次性代码生成:在项目根目录运转指令:flutter pub run build_runner build --delete-conflicting-outputs ; 需要在每次修正模型类后手动构建;
持续生成代码:在项目根目录运转指令:flutter pub run build_runner watch 来启动监听;运用监听器监听项目中的文件的变化,并在需要时主动构建必要的文件;启动监听并让它留在后台运转是安全的。
运转指令生成东西,会发现生成了名为user.g.dart的文件:
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'user.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
User _$UserFromJson(Map<String, dynamic> json) => User(
json['name'] as String,
json['email'] as String,
);
Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'name': instance.name,
'email': instance.email,
};
const jsonString = '{"name": "Jerry","email": "Jerry@example.com"}';
Map<String, dynamic> userMap = jsonDecode(jsonString);
if (kDebugMode) {
print('User $userMap');
}
var user = User.fromJson(userMap);
if (kDebugMode) {
print('User ${user.toString()}');
print('User ${user.toJson()}');
print('User ${jsonEncode(user)}');
print('User ${user.name}');
print('User ${user.email}');
}
检查打印日志:
User {name: Jerry, email: Jerry@example.com}
User Instance of 'User'
User {name: Jerry, email: Jerry@example.com}
User {"name":"Jerry","email":"Jerry@example.com"}
User Jerry
User Jerry@example.com
const jsonString = '{"name": "Jerry","email": "Jerry@example.com"}';
Map<String, dynamic> userMap = jsonDecode(jsonString);
if (kDebugMode) {
print('User $userMap');
}
var user = User.fromJson(userMap);
if (kDebugMode) {
print('User ${user.toString()}');
print('User ${user.toJson()}');
print('User ${jsonEncode(user)}');
print('User ${user.name}');
print('User ${user.email}');
}
检查打印日志:
User {name: Jerry, email: Jerry@example.com}
User Instance of 'User'
User {name: Jerry, email: Jerry@example.com}
User {"name":"Jerry","email":"Jerry@example.com"}
User Jerry
User Jerry@example.com