我想在Freezed数据类中添加私有字段。
所以,我试着写这个。
@freezed
class User with _$User {
const factory User(
String _id,
String _name,
) = _User;
}
但是,在我的编辑器中,在user.freezed.dart中显示“Named parameters can't start with an underscore.(private_optional_parameter)”
请告诉我如何解决这个问题。
2条答案
按热度按时间xvw2m8pv1#
为了使Adnan的解决方案更明显:
您可以通过使用
@protected
注解来保护freezed
类中的字段:当然,这只是半有用的,除非您还定义了一些getter来访问受保护字段中的信息。
vsnjm48y2#
我希望有一个私有属性和一个返回修改变量的公共getter,使用
@Default('')
不能解决我的 * 转换 * 空类型为声音类型的问题。总之-长话短说:冷冻(根据版本。2.4.5)默认情况下不允许在其类中使用私有属性,这是由于
copyWith
方法的代码生成问题。如果这个方法对你来说不重要,那么你可以告诉build_runner
跳过它,这样注解你的类:然后你的属性将无法被其他类访问(但是你不能在
User
对象上使用copyWith
方法)。使用@protected
注解标记代码并不是那么好,因为变量仍然是公开和可见的。对于我的情况,我必须找到变通办法。我把代码片段留在这里,因为将来可能有人需要它(也可能是未来的我):