Dart 單例模式


#Flutter#Dart#單例模式 (Singleton)

在寫 Futtler 時常常一些變數是希望在 APP 關閉前可以隨手取得,這時使用單例模式 (Singleton) 可以很方便的存取。
使用 Factory constructor 方式即可完成 Dart 中的 Singleton

class SingletonClass {
  static final SingletonClass _singleton = SingletonClass._init();
  factory SingletonClass() => _singleton;
  SingletonClass._init();
}

APP 內的正式/測試環境之間的切換我就是使用 Singleton 完成

void main() {
  GlobalService().useProductionMode();
  
  print(GlobalService().isTest()); // false

  GlobalService().useTestMode();

  print(GlobalService().isTest()); //true
}

class GlobalService {
  static final GlobalService _singleton = GlobalService._init();

  factory GlobalService() => _singleton;
  GlobalService._init();

  bool _isTest = false;
  bool isTest() => _isTest;
  bool useTestMode() => _isTest = true;
  bool useProductionMode() => _isTest = false;
}

試一試吧:https://dartpad.dev/?id=7202b89d8735b76d70a5a06bd135dc7a


參考:
https://stackoverflow.com/questions/12649573