Skip to content

Commit 26e7b71

Browse files
committed
🚑️ Fix preview file delete predication
Fixes #278
1 parent 9b0d301 commit 26e7b71

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

lib/src/states/camera_picker_viewer_state.dart

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,22 @@ class CameraPickerViewerState extends State<CameraPickerViewer> {
120120
}
121121
}
122122

123+
/// If [CameraPickerConfig.shouldDeletePreviewFile] is true, the preview file
124+
/// will be deleted after unused.
125+
///
126+
/// [CameraPickerConfig.onEntitySaving] will reference the file, we don't want
127+
/// the file to be deleted in this case too.
128+
void deletePreviewFileIfConfigured() {
129+
if (pickerConfig.shouldDeletePreviewFile &&
130+
pickerConfig.onEntitySaving != null &&
131+
previewFile.existsSync()) {
132+
previewFile.delete().catchError((e, s) {
133+
handleErrorWithHandler(e, s, onError);
134+
return previewFile;
135+
});
136+
}
137+
}
138+
123139
/// When users confirm to use the taken file, create the [AssetEntity].
124140
/// While the entity might returned null, there's no side effects if popping `null`
125141
/// because the parent picker will ignore it.
@@ -137,7 +153,7 @@ class CameraPickerViewerState extends State<CameraPickerViewer> {
137153
await pickerConfig.onEntitySaving!(
138154
context,
139155
widget.viewType,
140-
File(widget.previewXFile.path),
156+
previewFile,
141157
);
142158
} catch (e, s) {
143159
handleErrorWithHandler(e, s, onError);
@@ -184,12 +200,7 @@ class CameraPickerViewerState extends State<CameraPickerViewer> {
184200
);
185201
break;
186202
}
187-
if (pickerConfig.shouldDeletePreviewFile && previewFile.existsSync()) {
188-
previewFile.delete().catchError((e, s) {
189-
handleErrorWithHandler(e, s, onError);
190-
return previewFile;
191-
});
192-
}
203+
deletePreviewFileIfConfigured();
193204
return;
194205
}
195206
handleErrorWithHandler(
@@ -387,11 +398,8 @@ class CameraPickerViewerState extends State<CameraPickerViewer> {
387398
canPop: true,
388399
// ignore: deprecated_member_use
389400
onPopInvoked: (didPop) {
390-
if (didPop && previewFile.existsSync()) {
391-
previewFile.delete().catchError((e, s) {
392-
handleErrorWithHandler(e, s, onError);
393-
return previewFile;
394-
});
401+
if (didPop) {
402+
deletePreviewFileIfConfigured();
395403
}
396404
},
397405
child: Material(

0 commit comments

Comments
 (0)