diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md index 1b7d0ffd4b57..1712aa0d3bab 100644 --- a/packages/image_picker/image_picker/CHANGELOG.md +++ b/packages/image_picker/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.4+6 + +* Fixes minor type issues in iOS implementation. + ## 0.8.4+5 * Improves the documentation on handling MainActivity being killed by the Android OS. diff --git a/packages/image_picker/image_picker/example/ios/Runner.xcodeproj/project.pbxproj b/packages/image_picker/image_picker/example/ios/Runner.xcodeproj/project.pbxproj index 22d203256261..f8fe6683482a 100644 --- a/packages/image_picker/image_picker/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/image_picker/image_picker/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ diff --git a/packages/image_picker/image_picker/example/ios/RunnerTests/PhotoAssetUtilTests.m b/packages/image_picker/image_picker/example/ios/RunnerTests/PhotoAssetUtilTests.m index b81b29f73cef..c38930f5cef5 100644 --- a/packages/image_picker/image_picker/example/ios/RunnerTests/PhotoAssetUtilTests.m +++ b/packages/image_picker/image_picker/example/ios/RunnerTests/PhotoAssetUtilTests.m @@ -101,11 +101,10 @@ - (void)testSaveImageWithOriginalImageData_ShouldSaveAsGifAnimation { size_t numberOfFrames = CGImageSourceGetCount(imageSource); - NSNumber *nilSize = (NSNumber *)[NSNull null]; NSString *savedPathGIF = [FLTImagePickerPhotoAssetUtil saveImageWithOriginalImageData:dataGIF image:imageGIF - maxWidth:nilSize - maxHeight:nilSize + maxWidth:nil + maxHeight:nil imageQuality:nil]; XCTAssertNotNil(savedPathGIF); XCTAssertEqualObjects([savedPathGIF substringFromIndex:savedPathGIF.length - 4], @".gif"); diff --git a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.h b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.h index b0edd03e5076..5e77a6ca67ae 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.h +++ b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.h @@ -18,9 +18,10 @@ NS_ASSUME_NONNULL_BEGIN @interface FLTImagePickerImageUtil : NSObject +// Resizes the given image to fit within maxWidth (if non-nil) and maxHeight (if non-nil) + (UIImage *)scaledImage:(UIImage *)image - maxWidth:(NSNumber *)maxWidth - maxHeight:(NSNumber *)maxHeight + maxWidth:(nullable NSNumber *)maxWidth + maxHeight:(nullable NSNumber *)maxHeight isMetadataAvailable:(BOOL)isMetadataAvailable; // Resize all gif animation frames. diff --git a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.m b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.m index 7b454072ecff..2d370aa2e6c8 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.m +++ b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerImageUtil.m @@ -35,8 +35,8 @@ + (UIImage *)scaledImage:(UIImage *)image double originalWidth = image.size.width; double originalHeight = image.size.height; - bool hasMaxWidth = maxWidth != (id)[NSNull null]; - bool hasMaxHeight = maxHeight != (id)[NSNull null]; + bool hasMaxWidth = maxWidth != nil; + bool hasMaxHeight = maxHeight != nil; double width = hasMaxWidth ? MIN([maxWidth doubleValue], originalWidth) : originalWidth; double height = hasMaxHeight ? MIN([maxHeight doubleValue], originalHeight) : originalHeight; diff --git a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m index cf3103195482..65a5fb8a71dd 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m +++ b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m @@ -16,6 +16,15 @@ #import "FLTImagePickerPhotoAssetUtil.h" #import "FLTPHPickerSaveImageToPathOperation.h" +/** + * Returns the value for the given key in 'dict', or nil if the value is + * NSNull. + */ +id GetNullableValueForKey(NSDictionary *dict, NSString *key) { + id value = dict[key]; + return value == [NSNull null] ? nil : value; +} + @interface FLTImagePickerPlugin () _arguments objectForKey:@"maxWidth"]; - NSNumber *maxHeight = [self->_arguments objectForKey:@"maxHeight"]; - NSNumber *imageQuality = [self->_arguments objectForKey:@"imageQuality"]; + NSNumber *maxWidth = GetNullableValueForKey(self->_arguments, @"maxWidth"); + NSNumber *maxHeight = GetNullableValueForKey(self->_arguments, @"maxHeight"); + NSNumber *imageQuality = GetNullableValueForKey(self->_arguments, @"imageQuality"); NSNumber *desiredImageQuality = [self getDesiredImageQuality:imageQuality]; NSOperationQueue *operationQueue = [NSOperationQueue new]; NSMutableArray *pathList = [self createNSMutableArrayWithSize:results.count]; @@ -480,14 +489,14 @@ - (void)imagePickerController:(UIImagePickerController *)picker if (image == nil) { image = [info objectForKey:UIImagePickerControllerOriginalImage]; } - NSNumber *maxWidth = [_arguments objectForKey:@"maxWidth"]; - NSNumber *maxHeight = [_arguments objectForKey:@"maxHeight"]; - NSNumber *imageQuality = [_arguments objectForKey:@"imageQuality"]; + NSNumber *maxWidth = GetNullableValueForKey(_arguments, @"maxWidth"); + NSNumber *maxHeight = GetNullableValueForKey(_arguments, @"maxHeight"); + NSNumber *imageQuality = GetNullableValueForKey(_arguments, @"imageQuality"); NSNumber *desiredImageQuality = [self getDesiredImageQuality:imageQuality]; PHAsset *originalAsset = [FLTImagePickerPhotoAssetUtil getAssetFromImagePickerInfo:info]; - if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { + if (maxWidth != nil || maxHeight != nil) { image = [FLTImagePickerImageUtil scaledImage:image maxWidth:maxWidth maxHeight:maxHeight diff --git a/packages/image_picker/image_picker/ios/Classes/FLTPHPickerSaveImageToPathOperation.m b/packages/image_picker/image_picker/ios/Classes/FLTPHPickerSaveImageToPathOperation.m index 30da22774d07..5a084c455f22 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTPHPickerSaveImageToPathOperation.m +++ b/packages/image_picker/image_picker/ios/Classes/FLTPHPickerSaveImageToPathOperation.m @@ -91,7 +91,7 @@ - (void)start { PHAsset *originalAsset = [FLTImagePickerPhotoAssetUtil getAssetFromPHPickerResult:self.result]; - if (self.maxWidth != (id)[NSNull null] || self.maxHeight != (id)[NSNull null]) { + if (self.maxWidth != nil || self.maxHeight != nil) { localImage = [FLTImagePickerImageUtil scaledImage:localImage maxWidth:self.maxWidth maxHeight:self.maxHeight diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml index 836c3ca93f3c..c072244263d0 100755 --- a/packages/image_picker/image_picker/pubspec.yaml +++ b/packages/image_picker/image_picker/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. repository: https://github.com/flutter/plugins/tree/main/packages/image_picker/image_picker issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22 -version: 0.8.4+5 +version: 0.8.4+6 environment: sdk: ">=2.14.0 <3.0.0"