gen*_*ser 4 code-generation flutter freezed
我用来Freezed在我的 flutter 项目上生成数据类。
我所做的一切与包自述文件中提到的完全一样:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'access_token.freezed.dart';
@freezed
class AccessToken with _$AccessToken {
@JsonSerializable()
const factory AccessToken(
@JsonKey(name: 'access_token') String accessToken,
@JsonKey(name: 'refresh_token') String refreshToken,
) = _AccessToken;
factory AccessToken.fromJson(Map<String, Object?> json) =>
_$AccessTokenFromJson(json);
}
Run Code Online (Sandbox Code Playgroud)
构建成功完成。
当我运行该应用程序时,我得到:
lib/services/models/access_token.freezed.dart:118:7:错误:找不到方法:'_$$_AccessTokenFromJson'。_$$ AccessTokenFromJson(json); ^^^^^^^^^^^^^^^^^^^^^^^^ lib/services/models/access_token.freezed.dart:157:12:错误:方法“ $$ AccessTokenToJson”不是“ t 为类“ $_AccessToken”定义。
- “_$ AccessToken”来自“package:tenant_app/services/models/access_token.dart”(“lib/services/models/access_token.dart”)。尝试将名称更正为现有方法的名称,或定义名为“ $$_AccessTokenToJson”的方法。返回 _$$_AccessTokenToJson(
为什么Freezed没有正确生成该函数?我缺少什么?
Rob*_*erg 12
您必须添加以下部分:
part 'access_token.g.dart';
Run Code Online (Sandbox Code Playgroud)
并且您不需要以下内容:
@JsonSerializable()
Run Code Online (Sandbox Code Playgroud)
并确保您运行(使用build或watch以下):
flutter pub run build_runner build --delete-conflicting-outputs
Run Code Online (Sandbox Code Playgroud)
我以您的示例为例并使用以下命令成功生成了所有内容:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'access_token.freezed.dart';
part 'access_token.g.dart';
@freezed
class AccessToken with _$AccessToken {
const factory AccessToken(
@JsonKey(name: 'access_token') String accessToken,
@JsonKey(name: 'refresh_token') String refreshToken,
) = _AccessToken;
factory AccessToken.fromJson(Map<String, Object?> json) => _$AccessTokenFromJson(json);
}
Run Code Online (Sandbox Code Playgroud)
使用freezed_annotation: ^2.1.0、freezed: ^2.1.0+1、build_runner: ^2.2.0, json_annotation: ^4.6.0、json_serializable: ^6.3.1
确保检查是否包含这些内容(根据此答案评论中的 OP,软件包丢失)。
生成的.g.dart文件:
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'access_token.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
_$_AccessToken _$$_AccessTokenFromJson(Map<String, dynamic> json) =>
_$_AccessToken(
json['access_token'] as String,
json['refresh_token'] as String,
);
Map<String, dynamic> _$$_AccessTokenToJson(_$_AccessToken instance) =>
<String, dynamic>{
'access_token': instance.accessToken,
'refresh_token': instance.refreshToken,
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |