辛格尔顿被处决

时间:2019-11-07 14:09:28

标签: flutter

我上课了:

class DeviceDao {
 //singleton
 static final DeviceDao _singleton = DeviceDao._( );

 static DeviceDao get instance => _singleton;

  DeviceDao._( ) {
    print("CREATING INSTANCE");


}
   ...... class data somes here
   }

我需要访问应用程序中的一个实例和一个实例。在某个时候,“创建实例”被打印两次,这意味着我的单例被处置了。在应用程序中的任何地方都没有_singleton的二传手。令人遗憾的是,此时所有类数据都变为空值。这种单例在什么情况下可以处置?

1 个答案:

答案 0 :(得分:0)

尝试通过这种方式定义您的Singleton:

 class DeviceDao {
     //singleton
     static final DeviceDao _singleton = DeviceDao._( );

     factory DeviceDao() => _singleton;

     DeviceDao._( ) {
        print("CREATING INSTANCE");
     }
   ...... class data somes here
 }

然后,您只需调用Class函数即可在任何地方访问Singleton:

DeviceDao().someClassMethod()

当您不想返回初始化的类本身时,请使用Factory。它只是返回在编译时分配的静态单例变量,因此仅存在一个静态变量。