diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index 78d44e594eb5..cf77655c6129 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.1+5 + +* iOS: Fix pickVideo does not work on iOS13. + ## 0.6.1+4 * Android: Fix a regression where the `retrieveLostImage` does not work anymore. diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.m b/packages/image_picker/ios/Classes/ImagePickerPlugin.m index a23e13918148..448629ffa874 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.m @@ -241,8 +241,29 @@ - (void)imagePickerController:(UIImagePickerController *)picker return; } if (videoURL != nil) { - self.result(videoURL.path); - self.result = nil; + // Precache file to a temp directory for ios13, + // to prevent unvalidated URL into the response. + if (@available(iOS 13.0, *)) { + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error; + + NSString *fileName = [videoURL lastPathComponent]; + NSString *tempPath = NSTemporaryDirectory(); + NSString *tempFile = [tempPath stringByAppendingPathComponent:fileName]; + + // Overwrite if exists + if ([fileManager fileExistsAtPath:tempFile] == YES) { + [fileManager removeItemAtPath:tempFile error:&error]; + } + + [fileManager copyItemAtPath:videoURL.path toPath:tempFile error:&error]; + + self.result(tempFile); + self.result = nil; + } else { + self.result(videoURL.path); + self.result = nil; + } } else { UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; if (image == nil) { diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index c5d1647bb410..ad09895d9445 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -5,7 +5,7 @@ authors: - Flutter Team - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.1+4 +version: 0.6.1+5 flutter: plugin: