captureMultiple method
Future<void>
captureMultiple({
- required List<
MediaCaptureConfig> captureConfigs(- ImageCaptureConfig defaultConfig
- required void onPictureTaken(
- int index,
- MediaCaptureConfig captureConfig,
- InspectionMedia<
MediaCaptureConfig> data
- CaptureFailureHandler? onCaptureFailure,
- CaptureFlowHandler? captureFlowHandler,
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.
CaptureFailureHandler? onCaptureFailure,
CaptureFlowHandler? captureFlowHandler,
}) async {
final cameras = await InspectionCamera.initCameras();
final configs = captureConfigs.call(defaultCaptureConfig);
final cameraConfig = await CameraConfig.generate(
captureConfig: configs.first,
cameras: cameras,
resolutionPreset: defaultCaptureConfig.resolutionPreset,
onComplete: navigationHandler.closeScreen,
);
for (var i = 0; i < configs.length; i++) {
final config = configs[i];
if (kIsWeb ||
_doesControllerNeedReInit(cameraConfig.cameraController, config)) {
await cameraConfig.reInitController(
initialCameraLensDirection: config.defaultCameraLensDirection,
resolutionPreset: config.resolutionPreset,
);
}
final cameraController = cameraConfig.cameraController;
if (cameraController.description.lensDirection !=
config.defaultCameraLensDirection) {
await cameraController.setDescription(
cameras.getCamera(
config.defaultCameraLensDirection,
returnDefaultOnNoMatch: true,
),
);
}
try {
final image = await _takeMedia(
cameraConfig: cameraConfig,
captureConfig: config,
);
if (kIsWeb) {
await cameraController.dispose();
}
onPictureTaken.call(
i,
config,
image,
);
if (captureFlowHandler != null) {
if (!(await captureFlowHandler(i, config))) {
break;
}
}
} catch (e, s) {
if (!(onCaptureFailure
?.call(i, config, (exception: e, stackTrace: s)) ??
true)) {
break;
}
}
}
if (!kIsWeb) {
await cameraConfig.cameraController.dispose();
}
}