症状
Dart で Singleton なクラスを作るときは以下のようにするといける、といろいろなところで解説されている。
Singleton.dart
class Singleton {
static final Singleton _singleton = new Singleton._internal();
factory Singleton() {
return _singleton;
}
Singleton._internal();
}
この Singleton
2つのdartファイルにて参照しようとすると、なぜかインスタンスが2つ作られてしまう現象になやまされた。 (それじゃぁ、Singletonじゃない!!)
原因
import
の書き方が package:....
に統一されていなかったため、Singletonが違うものとして認識されていた。(謎挙動。。。)
例えば以下のような感じ。このように、importの形式が違うとDartは別物として扱っちゃうらしい。。(なんでだろう・・・?)
main.dart
import 'singleton.dart'
some.dart
import 'package:mypj/singleton.dart'
解決策
package:...
な書き方に統一する。
おわり
この謎の挙動、原因が全然つかめなくてものすごいハマった(T_T)。数時間使っちゃったよ。。。悲しみ。。。。。
もし同じ様な問題に悩まされている人がいたら、この投稿が役に立つといいな。。。。数時間使う前に。。。
検索しまくって出てきた以下に助けられました。感謝です。