Skip to content

Commit 51b77cc

Browse files
committed
⚡️ Dispose the controller when previewing
1 parent 8aa3acd commit 51b77cc

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

lib/src/widget/camera_picker.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -681,20 +681,26 @@ class CameraPickerState extends State<CameraPicker>
681681
/// 仅当初始化成功且相机未在拍照时拍照。
682682
Future<void> takePicture() async {
683683
if (controller.value.isInitialized && !controller.value.isTakingPicture) {
684+
final XFile _file = await controller.takePicture();
685+
// Delay disposing the controller to hold the preview.
686+
Future<void>.delayed(const Duration(milliseconds: 500), () {
687+
controller.dispose();
688+
});
684689
final AssetEntity? entity = await CameraPickerViewer.pushToViewer(
685690
context,
686691
pickerState: this,
687692
pickerType: CameraPickerViewType.image,
688-
previewXFile: await controller.takePicture(),
693+
previewXFile: _file,
689694
theme: theme,
690695
shouldDeletePreviewFile: shouldDeletePreviewFile,
691696
onEntitySaving: widget.onEntitySaving,
692697
);
693698
if (entity != null) {
694699
Navigator.of(context).pop(entity);
695-
} else {
696-
safeSetState(() {});
700+
return;
697701
}
702+
initCameras(currentCamera);
703+
safeSetState(() {});
698704
}
699705
}
700706

0 commit comments

Comments
 (0)