diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index 13c41e446954..97e1a1d27e3c 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.6 + +* Fixes crash when an image in the gallery is tapped more than once. + ## 0.6.5+1 * Fix CocoaPods podspec lint warnings. diff --git a/packages/image_picker/ios/Classes/FLTImagePickerPlugin.m b/packages/image_picker/ios/Classes/FLTImagePickerPlugin.m index f866ee30fc5e..d01d0928089e 100644 --- a/packages/image_picker/ios/Classes/FLTImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/FLTImagePickerPlugin.m @@ -279,7 +279,7 @@ - (void)imagePickerController:(UIImagePickerController *)picker } self.result(videoURL.path); self.result = nil; - + _arguments = nil; } else { UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; if (image == nil) { @@ -322,7 +322,6 @@ - (void)imagePickerController:(UIImagePickerController *)picker }]; } } - _arguments = nil; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { @@ -357,6 +356,9 @@ - (void)saveImageWithPickerInfo:(NSDictionary *)info } - (void)handleSavedPath:(NSString *)path { + if (!self.result) { + return; + } if (path) { self.result(path); } else { @@ -365,6 +367,7 @@ - (void)handleSavedPath:(NSString *)path { details:nil]); } self.result = nil; + _arguments = nil; } @end diff --git a/packages/image_picker/ios/Tests/ImagePickerPluginTests.m b/packages/image_picker/ios/Tests/ImagePickerPluginTests.m index e961aab55bfd..b7f0d71fb95d 100644 --- a/packages/image_picker/ios/Tests/ImagePickerPluginTests.m +++ b/packages/image_picker/ios/Tests/ImagePickerPluginTests.m @@ -7,6 +7,11 @@ @import image_picker; @import XCTest; +@interface FLTImagePickerPlugin (Test) +@property(copy, nonatomic) FlutterResult result; +- (void)handleSavedPath:(NSString *)path; +@end + @interface ImagePickerPluginTests : XCTestCase @end @@ -90,4 +95,20 @@ - (void)testPickingVideoWithDuration { XCTAssertEqual([plugin getImagePickerController].videoMaximumDuration, 95); } +- (void)testPluginPickImageSelectMultipleTimes { + FLTImagePickerPlugin *plugin = + [[FLTImagePickerPlugin alloc] initWithViewController:[UIViewController new]]; + FlutterMethodCall *call = + [FlutterMethodCall methodCallWithMethodName:@"pickImage" + arguments:@{@"source" : @(0), @"cameraDevice" : @(0)}]; + [plugin handleMethodCall:call + result:^(id _Nullable r){ + }]; + plugin.result = ^(id result) { + + }; + [plugin handleSavedPath:@"test"]; + [plugin handleSavedPath:@"test"]; +} + @end diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index 523668071e48..259d0c9b0955 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/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 -version: 0.6.5+1 +version: 0.6.6 flutter: plugin: