Dartにてシングルトンパターンを実装する際は、factoryコンストラクタを用いて実装を行います。
factoryコンストラクタ
factoryコンストラクタは通常のコンストラクタと異なり、呼び出された際にインスタンスを生成しないため、手動でインスタンスを生成し明示的に自らを返却する必要があります。
インスタンスの生成に纏わる流れを全てコントロール出来るため、コンストラクタのボディにて自らを生成、static変数へ自身の参照を保存、といった実装をスマートに記述出来ます。
実際にシングルトンパターンを実装すると下記の様になります。
class Singleton
{
static Singleton _instance;
factory Singleton()
{
if (_instance == null) {
_instance = new Singleton._();
}
return _instance;
}
const Singleton._();
}
呼び出す際は次の通りです。
final instance = Singleton();