diff --git a/lib/src/features/posting/providers/camera_provider.dart b/lib/src/features/posting/providers/camera_provider.dart index ba8b1b5f..ef2b564b 100644 --- a/lib/src/features/posting/providers/camera_provider.dart +++ b/lib/src/features/posting/providers/camera_provider.dart @@ -209,6 +209,14 @@ class Camera extends _$Camera { await currentState.controller!.dispose(); _logger.i('Camera controller disposed successfully'); } + + state = AsyncValue.data( + currentState?.copyWith( + controller: null, + isInitialized: false, + ) ?? + const CameraState(), + ); } catch (e, stackTrace) { _logger.e('Error disposing camera', error: e, stackTrace: stackTrace); } @@ -221,4 +229,8 @@ class Camera extends _$Camera { state = AsyncValue.data(currentState.copyWith(error: null)); } } + + Future disposeCamera() async { + await _disposeCamera(); + } } diff --git a/lib/src/features/posting/ui/pages/recording_page.dart b/lib/src/features/posting/ui/pages/recording_page.dart index d6e2cc59..84126e40 100644 --- a/lib/src/features/posting/ui/pages/recording_page.dart +++ b/lib/src/features/posting/ui/pages/recording_page.dart @@ -104,6 +104,11 @@ class _RecordingPageState extends ConsumerState { try { _logger.d('Processing recorded video: ${videoFile.path}'); + final cameraNotifier = ref.read(cameraProvider.notifier); + await cameraNotifier.disposeCamera(); + + if (!mounted) return; + final editorVideo = EditorVideo.file(File(videoFile.path)); final result = await GetIt.I().openVideoEditor( context, @@ -117,6 +122,7 @@ class _RecordingPageState extends ConsumerState { _isProcessing = false; }); _logger.d('User cancelled video editing'); + await cameraNotifier.reinitializeCamera(); return; }