我想要一个能够返回配置对象(例如 EnglishLocale)并使其在整个应用程序生命周期中可用的单例对象(即 ConfigManager)。
让我们做一个例子:
当我需要一个特定的字符串时,我只需要做类似的事情
ConfigManager.instance.locale.myString;
现在,我看过 here为了了解 Dart 中的工作原理。 Singleton 创建部分很清楚,但是正如我所说,我需要根据用户输入提供不同的配置。
查看下图以获得更多示意图:
编辑 1 ,现在,这是我到目前为止所做的:
class ConfigManager {
Locale loc;
static ConfigManager _instance;
factory ConfigManager(Locale loc) => _instance ??= new ConfigManager._(loc);
ConfigManager._(Locale loc);
static get instance => _instance;
}
这样,当我决定获取一个特定字符串时,我可以使用以下语法:
ConfigManager.instance.loc.presentation1body
这是初始化阶段
ConfigManager(new EnglishLocale());
但是我继续收到错误
"the getter was called on null"
我有点困惑,请帮助我。
最佳答案
实际上,以下代码正在运行:
class ConfigManager {
Locale loc;
static ConfigManager _instance;
factory ConfigManager() => _instance ??= new ConfigManager._();
void init(Locale loc) {
this.loc = loc;
}
ConfigManager._();
}
使用 init 方法,我可以将所需的东西分配给我的 Singleton ConfigManager,以便稍后即时获得我需要的东西。
但是,我会在更多性能和代码优雅方面进行更多研究(可能使用不同的模式)。
关于flutter - 如何在 Flutter App 中拥有一个全局单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284871/