我对 Flutter 很陌生(甚至对 Freezed 包还很陌生......)所以我希望这个问题是相关的。
所以,这是我的用例:用户可以是不同组的成员。用户类共享。我在处理与 Freezed 的关系时遇到一些问题:
@freezed
abstract class User with _$User {
const factory User({
@required UniqueId id,
Name firstname,
Name lastname,
@required EmailAddress email,
@required bool emailVerified,
}) = _User;
}
@freezed
abstract class Member extends User with _$Member { // Here is the issue
const factory Member({
@required UniqueId id,
@required Name displayname,
String photo,
List roles,
String status,
DateTime expiration,
}) = _Member;
Run Code Online (Sandbox Code Playgroud)
_$Member.copyWith' ('$MemberCopyWith Function()') 不是 '_$User.copyWith' ('$UserCopyWith Function()') 的有效覆盖。
这样做的正确方法是什么?
rkd*_*r0n -1
您必须使用该Implements
标签并创建User
一个普通的抽象类。但考虑到您的情况,我认为最好执行以下操作。
abstract class UserBase {
UniqueId get id;
Name get firstname;
Name get lastname;
EmailAddress get email;
bool get emailVerified;
}
@freezed
abstract class User with _$User {
@Implements(UserBase)
const factory User({
@required UniqueId id,
Name firstname,
Name lastname,
@required EmailAddress email,
@required bool emailVerified,
}) = _User;
}
@freezed
abstract class Member with _$Member {
@Implements(UserBase)
const factory Member({
@required UniqueId id,
Name firstname,
Name lastname,
@required EmailAddress email,
@required bool emailVerified,
@required Name displayname,
String photo,
List roles,
String status,
DateTime expiration,
}) = _Member;
}
Run Code Online (Sandbox Code Playgroud)
如有任何疑问,请随时提出。
归档时间: |
|
查看次数: |
3568 次 |
最近记录: |