captureMultiple method

Future<void> captureMultiple({
  1. required List<MediaCaptureConfig> captureConfigs(
    1. ImageCaptureConfig defaultConfig
    ),
  2. required void onPictureTaken(
    1. int index,
    2. MediaCaptureConfig captureConfig,
    3. InspectionMedia<MediaCaptureConfig> data
    ),
  3. bool onCaptureFailure(
    1. int failureAtIndex,
    2. MediaCaptureConfig captureConfig,
    3. ({Object? exception, StackTrace? stackTrace}) exceptionInfo
    )?,
})

Implementation

Future<void> captureMultiple({
  required List<MediaCaptureConfig> Function(ImageCaptureConfig defaultConfig)
      captureConfigs,
  required void Function(
    int index,
    MediaCaptureConfig captureConfig,
    InspectionMedia data,
  ) onPictureTaken,

  /// Return true to continue the flow, false to exit it.
  bool Function(
    int failureAtIndex,
    MediaCaptureConfig captureConfig,
    ({
      Object? exception,
      StackTrace? stackTrace,
    }) exceptionInfo,
  )? onCaptureFailure,
}) async {
  final cameras = await InspectionCamera.initCameras();
  print('step 3');

  final configs = captureConfigs.call(defaultCaptureConfig);
  print('step 4');
  final cameraConfig = await CameraConfig.generate(
    captureConfig: configs.first,
    cameras: cameras,
    resolutionPreset: defaultCaptureConfig.resolutionPreset,
    onComplete: navigationHandler.closeScreen,
  );
  final cameraController = cameraConfig.cameraController;
  print('step 5');

  for (var i = 0; i < configs.length; i++) {
    final config = configs[i];
    print("Unique id number for current config ${config.uniqueIdNumber}");
    ;
    if (cameraController.description.lensDirection !=
        config.defaultCameraLensDirection) {
      await cameraController.setDescription(
        cameras.getCamera(
          config.defaultCameraLensDirection,
          returnDefaultOnNoMatch: true,
        ),
      );
    }
    print('step 6');
    try {
      final image = await _takeMedia(
        cameraConfig: cameraConfig,
        captureConfig: config,
      );
      // if(kIsWeb) {
      //   await cameraController.dispose();
      // }
      onPictureTaken.call(
        i,
        config,
        image,
      );
    } catch (e, s) {
      if (!(onCaptureFailure
              ?.call(i, config, (exception: e, stackTrace: s)) ??
          true)) {
        break;
      }
    }
  }
  // if(!kIsWeb) {
  await cameraController.dispose();
  // }
}