import 'dart:async';

/// Ein Service zur vereinfachung, um darauf zu warten,
/// dass etwas Initialisiert wurde
class Initializer {
  bool _initialized = false;
  final Completer<void> _initializedCompleter = Completer<void>();

  /// Gibt zurück, ob bereits initialisiert wurde
  bool get initialized => _initialized;

  /// Auf diese Funktion kann gewartet werden,
  /// bis [Initializer] initialisiert wurde
  Future<void> waitUntilInitialized() => _initializedCompleter.future;

  /// Setzt den [Initializer] auf initialisiert
  void setInitialized() {
    if (_initialized) {
      return;
    }

    _initialized = true;
    _initializedCompleter.complete();
  }
}
