在DART中,可以在单例中传递参数吗? [英] In Dart, is it possible to pass an argument in a singleton?

查看:36
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆