create static method

Creates and initializes the single active notification runtime.

Repeated calls with the same configuration return the active service. A different configuration fails while another runtime is active.

Implementation

static Future<NotificationResult<NotificationService>> create(
  NotificationConfig config,
) {
  final active = _activeInstance;
  if (active != null) {
    if (identical(active._config, config)) {
      return Future.value(NotificationSuccess(active));
    }
    return Future.value(
      const NotificationFailureResult(
        NotificationLifecycleFailure(
          'A notification runtime is already active with another configuration',
        ),
      ),
    );
  }

  final pending = _initialization;
  if (pending != null) {
    if (identical(_initializingConfig, config)) return pending;
    return Future.value(
      const NotificationFailureResult(
        NotificationLifecycleFailure(
          'Notification initialization is already running with another configuration',
        ),
      ),
    );
  }

  _initializingConfig = config;
  final future = _create(config);
  _initialization = future;
  return future;
}