Flutter 单身汉得到处置

Flutter 单身汉得到处置,flutter,Flutter,我有一门课: class DeviceDao { //singleton static final DeviceDao _singleton = DeviceDao._( ); static DeviceDao get instance => _singleton; DeviceDao._( ) { print("CREATING INSTANCE"); } ...... class data somes here } 我需要访问应用程序中的一个且仅

我有一门课:

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

 static DeviceDao get instance => _singleton;

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


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

我需要访问应用程序中的一个且仅一个实例。在某个时刻,“创建实例”被打印了两次,这意味着我的singleton被处理掉了。应用程序中的任何地方都没有针对_singleton的setter。显然,所有的类数据在这一点上都变成了空值。在什么情况下可以处置此类单例?

尝试用以下方式定义您的单例:

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

     factory DeviceDao() => _singleton;

     DeviceDao._( ) {
        print("CREATING INSTANCE");
     }
   ...... class data somes here
 }
然后,您只需调用Class函数,就可以在任何地方访问Singleton:

DeviceDao().someClassMethod()

当您不想返回初始化的类本身时,请使用Factory,而实际情况是这样的。它只是返回在编译期间分配的静态单例变量,因此只存在一个静态变量。

我尝试了。不走运。是一样的。构造函数调用了两次。这让我发疯。有趣的事实:另外两个单身汉的工作和预期的一样。我找到了!我一直在用“计算机”。似乎compute不知道现有的单例是静态的。(在我淡忘的记忆中,我可能记得调用compute是一个独立的应用程序)。我将您的解决方案保留在我的应用程序中,因为它的语法较短。