switchFlashesMode method
The method to switch between flash modes. 切换闪光灯模式的方法
Implementation
Future<void> switchFlashesMode(CameraValue value) async {
final List<FlashMode> flashModes = validFlashModes[currentCamera]!;
if (flashModes.isEmpty) {
// Unlikely event that no flash mode is valid for current camera.
handleErrorWithHandler(
CameraException(
'No FlashMode found.',
'No flash modes are available with the camera.',
),
pickerConfig.onError,
);
return;
}
final int currentFlashModeIndex = flashModes.indexOf(value.flashMode);
final int nextFlashModeIndex;
if (currentFlashModeIndex + 1 >= flashModes.length) {
nextFlashModeIndex = 0;
} else {
nextFlashModeIndex = currentFlashModeIndex + 1;
}
final FlashMode nextFlashMode = flashModes[nextFlashModeIndex];
try {
await controller.setFlashMode(nextFlashMode);
} catch (e, s) {
// Remove the flash mode that throws an exception.
validFlashModes[currentCamera]!.remove(nextFlashMode);
switchFlashesMode(value);
handleErrorWithHandler(e, pickerConfig.onError, s: s);
}
}