initialize method

Future<void> initialize()

Implementation

Future<void> initialize() async {
  if (_disposed || _sessionId != null) return;
  _emit(value.copyWith(state: UCameraState.initializing, clearError: true));
  try {
    final Map<Object?, Object?>? created = await UCameraChannel.invokeMap("create", <String, Object?>{"config": _config.toMap()});
    if (created == null) throw const UCameraException(code: UCameraErrorCode.configuration, message: "Camera session was not created");
    if (_disposed) {
      final int? id = (created["sessionId"] as num?)?.toInt();
      if (id != null) unawaited(UCameraChannel.invoke<void>("dispose", <String, Object?>{"sessionId": id}));
      return;
    }

    final int sessionId = ((created["sessionId"] as num?) ?? 0).toInt();
    _sessionId = sessionId;
    _events = UCameraChannel.events(sessionId).listen(_onEvent, onError: _onStreamError);
    if (_config.needsFrames) {
      _frames = UCameraChannel.frames(sessionId).listen(_onFrame, onError: _onStreamError);
    }
    _applyCreated(created);
    if (_config.scanning) await startScanning();
  } on UCameraException catch (error) {
    _fail(error);
  }
}