我正在创建一个类,它有一个ID字段,该字段在创建对象时生成。
const uuid = Uuid();
class Foo {
final String id = uuid.v4();
final String data;
Foo(this.data);
}
我意识到这种方法将不再起作用,因为稍后我将在数据库中拥有现有的Id。因此,我希望能够在构造函数中设置Id,但如果Id没有作为参数传递,则生成它。
到目前为止,这让我找到了两个解决方案,但我并不满意。
选项1:只需调用uuid函数并预先传递一个readyid
class Foo {
final String id;
final String data;
Foo(this.id, this.data);
}
foo = Foo(Uuid().v4, "Some data");
这 * 工作 *,但基本上避免了问题的全部。这将是更好的类自动处理它。
选项2:调用构造函数体中的uuid函数
const uuid = Uuid();
class Foo {
String? id;
final String data;
Foo({this.id, required this.data}) {
id ??= uuid.v4();
}
}
这也可以 * 工作 *,但是因为id字段首先被设置为null,然后才被检查并替换为id,所以我们必须从它中剥离最后一个关键字。这非常糟糕。
你知道我还能做什么吗?
1条答案
按热度按时间qnakjoqk1#
是的,好吧,我在问题的中间想出了一个答案。尽管如此,欢迎任何进一步的想法和改进!
我们可以只使用一个伪变量来保存null,而不是直接将其插入到final字段中。
编辑:正如注解中所指出的,您应该指定哑元变量的类型,因为它将默认为'dynamic'