在DART中,可以在单例中传递参数吗? [英] In Dart, is it possible to pass an argument in a singleton?
本文介绍了在DART中,可以在单例中传递参数吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples() {
return _inst;
}
}
我有个单身班。这确保了一个类只有一个实例被创建。因此,即使有人试图实例化它,他们也会使用相同的实例。我还可以创建和设置值,如下所示:
Peoples ps1 = Peoples();
Peoples ps2 = Peoples();
ps1.id = 1;
ps1.name = "First";
ps2.id = 2;
ps2.name = "Second";
是否可以实例化并设置如下值:
Peoples ps1 = Peoples(1, "First");
Peoples ps2 = Peoples(2, "Second");
因此,现在"PS1"和"PS2"都将具有(2,"Second")。
推荐答案
当然! 您需要将参数传递给工厂方法,然后需要使用引用的实例更新属性。
例如,您有
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples() {
return _inst;
}
}
如果您应用我的解决方案,则
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples({int id, String name}) {
_inst.id = id
_inst.name = name
return _inst;
}
}
有了这一点,您的问题就应该得到回答了
有关工厂和参数的更多信息,请访问
https://dart.dev/guides/language/language-tour
工作示例
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples(int id, String name) {
_inst.id = id;
_inst.name = name;
return _inst;
}
}
void main() {
print("Instance of = " + Peoples(0, "Dylan").name);
print("Instance of = " + Peoples(1, "Joe").name);
print("Instance of = " + Peoples(2, "Maria").name);
}
这篇关于在DART中,可以在单例中传递参数吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文