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是一个独立的应用程序)。我将您的解决方案保留在我的应用程序中,因为它的语法较短。