diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md index 380fcf4cbfb3..d453c82f9ac4 100644 --- a/packages/image_picker/image_picker/CHANGELOG.md +++ b/packages/image_picker/image_picker/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.7.5+2 +* Implement `UIAlertController` with a preferredStyle of `UIAlertControllerStyleAlert` since `UIAlertView` is deprecated. + ## 0.7.5+1 * Fixes a rotation problem where Select Photos limited access is chosen but the image that is picked @@ -7,7 +10,7 @@ is not included selected photos and image is scaled. * Fixes an issue where image rotation is wrong when Select Photos chose and image is scaled. * Migrate to PHPicker for iOS 14 and higher versions to pick image from the photo library. -* Implement the limited permission to pick photo from the photo library when Select Photo is chose. +* Implement the limited permission to pick photo from the photo library when Select Photo is chosen. ## 0.7.4 diff --git a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m index 2a9e70cd0081..25ddaf48f426 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m +++ b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m @@ -190,11 +190,17 @@ - (void)showCamera { animated:YES completion:nil]; } else { - [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) - message:NSLocalizedString(@"Camera not available.", nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"OK", nil) - otherButtonTitles:nil] show]; + UIAlertController *cameraErrorAlert = + [UIAlertController alertControllerWithTitle:@"Error" + message:@"Camera not available." + preferredStyle:UIAlertControllerStyleAlert]; + [cameraErrorAlert addAction:[UIAlertAction actionWithTitle:@"OK" + style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action){ + }]]; + [[self viewControllerWithWindow:nil] presentViewController:cameraErrorAlert + animated:YES + completion:nil]; self.result(nil); self.result = nil; _arguments = nil; @@ -211,19 +217,16 @@ - (void)checkCameraAuthorization { case AVAuthorizationStatusNotDetermined: { [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { - if (granted) { - dispatch_async(dispatch_get_main_queue(), ^{ - if (granted) { - [self showCamera]; - } - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (granted) { + [self showCamera]; + } else { [self errorNoCameraAccess:AVAuthorizationStatusDenied]; - }); - } + } + }); }]; - }; break; + break; + } case AVAuthorizationStatusDenied: case AVAuthorizationStatusRestricted: default: @@ -364,41 +367,39 @@ - (void)picker:(PHPickerViewController *)picker completionHandler:^(__kindof id _Nullable image, NSError *_Nullable error) { if ([image isKindOfClass:[UIImage class]]) { - if (image != nil) { - __block UIImage *localImage = image; - dispatch_async(dispatch_get_main_queue(), ^{ - PHAsset *originalAsset = - [FLTImagePickerPhotoAssetUtil getAssetFromPHPickerResult:result]; - - if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { - localImage = [FLTImagePickerImageUtil scaledImage:localImage - maxWidth:maxWidth - maxHeight:maxHeight - isMetadataAvailable:originalAsset != nil]; - } - - if (!originalAsset) { - // Image picked without an original asset (e.g. User took a photo directly) - [self saveImageWithPickerInfo:nil - image:localImage - imageQuality:desiredImageQuality]; - } else { - [[PHImageManager defaultManager] - requestImageDataForAsset:originalAsset - options:nil - resultHandler:^( - NSData *_Nullable imageData, NSString *_Nullable dataUTI, - UIImageOrientation orientation, NSDictionary *_Nullable info) { - // maxWidth and maxHeight are used only for GIF images. - [self saveImageWithOriginalImageData:imageData - image:localImage - maxWidth:maxWidth - maxHeight:maxHeight - imageQuality:desiredImageQuality]; - }]; - } - }); - } + __block UIImage *localImage = image; + dispatch_async(dispatch_get_main_queue(), ^{ + PHAsset *originalAsset = + [FLTImagePickerPhotoAssetUtil getAssetFromPHPickerResult:result]; + + if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { + localImage = [FLTImagePickerImageUtil scaledImage:localImage + maxWidth:maxWidth + maxHeight:maxHeight + isMetadataAvailable:originalAsset != nil]; + } + + if (!originalAsset) { + // Image picked without an original asset (e.g. User took a photo directly) + [self saveImageWithPickerInfo:nil + image:localImage + imageQuality:desiredImageQuality]; + } else { + [[PHImageManager defaultManager] + requestImageDataForAsset:originalAsset + options:nil + resultHandler:^( + NSData *_Nullable imageData, NSString *_Nullable dataUTI, + UIImageOrientation orientation, NSDictionary *_Nullable info) { + // maxWidth and maxHeight are used only for GIF images. + [self saveImageWithOriginalImageData:imageData + image:localImage + maxWidth:maxWidth + maxHeight:maxHeight + imageQuality:desiredImageQuality]; + }]; + } + }); } }]; } diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml index fa6f653fa003..408045d66aa4 100755 --- a/packages/image_picker/image_picker/pubspec.yaml +++ b/packages/image_picker/image_picker/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker description: Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker -version: 0.7.5+1 +version: 0.7.5+2 flutter: plugin: