Flutter 单例

185 阅读1分钟

///实例
var singleton = SingletonManager();

///单例类
class SingletonManager {
  // 工厂方法构造函数 - 通过UserModel()获取对象1
  factory SingletonManager() => _getInstance();

  // instance的getter方法 - 通过UserModel.instance获取对象2
  static SingletonManager get instance => _getInstance();

  // 静态变量_instance,存储唯一对象
  static SingletonManager? _instance;

  // 获取唯一对象
  static SingletonManager _getInstance() {
    _instance ??= SingletonManager._internal();
    return _instance!;
  }

  //初始化...
  SingletonManager._internal() {
    //初始化其他操作...
    printf("SingletonManager init");
  }



  
}

void test() {
  ///验证内存地址是否一致
  SingletonManager s1 = SingletonManager();
  SingletonManager s2 = SingletonManager.instance;
  SingletonManager s3 = singleton;
  print(identical(s1, s2)); // 运行结果:true
  print(identical(s1, s3)); // 运行结果:true
  print(s1 == s2); // 运行结果:true
  print(s1 == s3); // 运行结果:true
}