[image_picker] Update iOS to Pigeon 13 (#5266)
This picks up some breaking changes in the Objective-C generator, most notably a switch from `NSNumber*` to `BOOL` for non-nullable boolean values, which avoids the class of problem noticed in https://github.com/flutter/packages/pull/5194
diff --git a/packages/image_picker/image_picker_ios/CHANGELOG.md b/packages/image_picker/image_picker_ios/CHANGELOG.md
index 83b953a..4433ea9 100644
--- a/packages/image_picker/image_picker_ios/CHANGELOG.md
+++ b/packages/image_picker/image_picker_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.8.8+4
+
+* Updates to Pigeon 13.
+
## 0.8.8+3
* Fixes a possible crash when calling a picker method while another is waiting on permissions.
diff --git a/packages/image_picker/image_picker_ios/example/ios/RunnerTests/ImagePickerPluginTests.m b/packages/image_picker/image_picker_ios/example/ios/RunnerTests/ImagePickerPluginTests.m
index 4f22c31..36ca8ec 100644
--- a/packages/image_picker/image_picker_ios/example/ios/RunnerTests/ImagePickerPluginTests.m
+++ b/packages/image_picker/image_picker_ios/example/ios/RunnerTests/ImagePickerPluginTests.m
@@ -56,7 +56,7 @@
camera:FLTSourceCameraRear]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSString *_Nullable result, FlutterError *_Nullable error){
}];
@@ -89,7 +89,7 @@
camera:FLTSourceCameraFront]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSString *_Nullable result, FlutterError *_Nullable error){
}];
@@ -174,7 +174,7 @@
[plugin pickMultiImageWithMaxSize:[FLTMaxSize makeWithWidth:@(100) height:@(200)]
quality:@(50)
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSArray<NSString *> *_Nullable result,
FlutterError *_Nullable error){
}];
@@ -197,8 +197,8 @@
FLTMediaSelectionOptions *mediaSelectionOptions =
[FLTMediaSelectionOptions makeWithMaxSize:[FLTMaxSize makeWithWidth:@(100) height:@(200)]
imageQuality:@(50)
- requestFullMetadata:@YES
- allowMultiple:@YES];
+ requestFullMetadata:YES
+ allowMultiple:YES];
[plugin pickMediaWithMediaSelectionOptions:mediaSelectionOptions
completion:^(NSArray<NSString *> *_Nullable result,
@@ -219,7 +219,7 @@
camera:FLTSourceCameraFront]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@NO
+ fullMetadata:NO
completion:^(NSString *_Nullable result, FlutterError *_Nullable error){
}];
@@ -235,7 +235,7 @@
[plugin pickMultiImageWithMaxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@NO
+ fullMetadata:NO
completion:^(NSArray<NSString *> *_Nullable result,
FlutterError *_Nullable error){
}];
@@ -253,8 +253,8 @@
FLTMediaSelectionOptions *mediaSelectionOptions =
[FLTMediaSelectionOptions makeWithMaxSize:[FLTMaxSize makeWithWidth:@(100) height:@(200)]
imageQuality:@(50)
- requestFullMetadata:@YES
- allowMultiple:@YES];
+ requestFullMetadata:YES
+ allowMultiple:YES];
[plugin pickMediaWithMediaSelectionOptions:mediaSelectionOptions
@@ -279,7 +279,7 @@
camera:FLTSourceCameraRear]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSString *_Nullable result, FlutterError *_Nullable error){
}];
@@ -502,7 +502,7 @@
camera:FLTSourceCameraFront]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSString *result, FlutterError *error){
}];
OCMVerifyAll(mockPhotoLibrary);
@@ -521,7 +521,7 @@
camera:FLTSourceCameraFront]
maxSize:[[FLTMaxSize alloc] init]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSString *result, FlutterError *error) {
XCTAssertNil(result);
XCTAssertEqualObjects(error.code, @"photo_access_denied");
@@ -543,7 +543,7 @@
XCTestExpectation *firstCallExpectation = [self expectationWithDescription:@"first call"];
[plugin pickMultiImageWithMaxSize:[FLTMaxSize makeWithWidth:@100 height:@100]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSArray<NSString *> *result, FlutterError *error) {
XCTAssertNotNil(error);
XCTAssertEqualObjects(error.code, @"multiple_request");
@@ -551,7 +551,7 @@
}];
[plugin pickMultiImageWithMaxSize:[FLTMaxSize makeWithWidth:@100 height:@100]
quality:nil
- fullMetadata:@YES
+ fullMetadata:YES
completion:^(NSArray<NSString *> *result, FlutterError *error){
}];
[self waitForExpectationsWithTimeout:30 handler:nil];
@@ -569,8 +569,8 @@
FLTMediaSelectionOptions *options =
[FLTMediaSelectionOptions makeWithMaxSize:[FLTMaxSize makeWithWidth:@(100) height:@(200)]
imageQuality:@(50)
- requestFullMetadata:@YES
- allowMultiple:@YES];
+ requestFullMetadata:YES
+ allowMultiple:YES];
XCTestExpectation *firstCallExpectation = [self expectationWithDescription:@"first call"];
[plugin pickMediaWithMediaSelectionOptions:options
completion:^(NSArray<NSString *> *result, FlutterError *error) {
@@ -585,11 +585,9 @@
}
- (void)testPickVideoDuplicateCallCancels API_AVAILABLE(ios(14)) {
- id mockPhotoLibrary = OCMClassMock([PHPhotoLibrary class]);
- OCMStub([mockPhotoLibrary authorizationStatusForAccessLevel:PHAccessLevelReadWrite])
- .andReturn(PHAuthorizationStatusNotDetermined);
- OCMExpect([mockPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite
- handler:OCMOCK_ANY]);
+ id mockPhotoLibrary = OCMClassMock([AVCaptureDevice class]);
+ OCMStub([mockPhotoLibrary authorizationStatusForMediaType:AVMediaTypeVideo])
+ .andReturn(AVAuthorizationStatusNotDetermined);
FLTImagePickerPlugin *plugin = [[FLTImagePickerPlugin alloc] init];
diff --git a/packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerPlugin.m b/packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerPlugin.m
index 6a4fde8..f699ca9 100644
--- a/packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerPlugin.m
+++ b/packages/image_picker/image_picker_ios/ios/Classes/FLTImagePickerPlugin.m
@@ -48,7 +48,7 @@
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
FLTImagePickerPlugin *instance = [[FLTImagePickerPlugin alloc] init];
- FLTImagePickerApiSetup(registrar.messenger, instance);
+ SetUpFLTImagePickerApi(registrar.messenger, instance);
}
- (UIImagePickerController *)createImagePickerController {
@@ -162,7 +162,7 @@
- (void)pickImageWithSource:(nonnull FLTSourceSpecification *)source
maxSize:(nonnull FLTMaxSize *)maxSize
quality:(nullable NSNumber *)imageQuality
- fullMetadata:(NSNumber *)fullMetadata
+ fullMetadata:(BOOL)fullMetadata
completion:
(nonnull void (^)(NSString *_Nullable, FlutterError *_Nullable))completion {
[self cancelInProgressCall];
@@ -178,7 +178,7 @@
context.maxSize = maxSize;
context.imageQuality = imageQuality;
context.maxImageCount = 1;
- context.requestFullMetadata = [fullMetadata boolValue];
+ context.requestFullMetadata = fullMetadata;
if (source.type == FLTSourceTypeGallery) { // Capture is not possible with PHPicker
if (@available(iOS 14, *)) {
@@ -193,7 +193,7 @@
- (void)pickMultiImageWithMaxSize:(nonnull FLTMaxSize *)maxSize
quality:(nullable NSNumber *)imageQuality
- fullMetadata:(NSNumber *)fullMetadata
+ fullMetadata:(BOOL)fullMetadata
completion:(nonnull void (^)(NSArray<NSString *> *_Nullable,
FlutterError *_Nullable))completion {
[self cancelInProgressCall];
@@ -201,7 +201,7 @@
[[FLTImagePickerMethodCallContext alloc] initWithResult:completion];
context.maxSize = maxSize;
context.imageQuality = imageQuality;
- context.requestFullMetadata = [fullMetadata boolValue];
+ context.requestFullMetadata = fullMetadata;
if (@available(iOS 14, *)) {
[self launchPHPickerWithContext:context];
@@ -223,7 +223,7 @@
context.imageQuality = [mediaSelectionOptions imageQuality];
context.requestFullMetadata = [mediaSelectionOptions requestFullMetadata];
context.includeVideo = YES;
- if (![[mediaSelectionOptions allowMultiple] boolValue]) {
+ if (!mediaSelectionOptions.allowMultiple) {
context.maxImageCount = 1;
}
diff --git a/packages/image_picker/image_picker_ios/ios/Classes/messages.g.h b/packages/image_picker/image_picker_ios/ios/Classes/messages.g.h
index 4e2c4b2..593f882 100644
--- a/packages/image_picker/image_picker_ios/ios/Classes/messages.g.h
+++ b/packages/image_picker/image_picker_ios/ios/Classes/messages.g.h
@@ -1,7 +1,7 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v9.2.5), do not edit directly.
+// Autogenerated from Pigeon (v13.0.0), do not edit directly.
// See also: https://pub.dev/packages/pigeon
#import <Foundation/Foundation.h>
@@ -18,11 +18,23 @@
FLTSourceCameraFront = 1,
};
+/// Wrapper for FLTSourceCamera to allow for nullability.
+@interface FLTSourceCameraBox : NSObject
+@property(nonatomic, assign) FLTSourceCamera value;
+- (instancetype)initWithValue:(FLTSourceCamera)value;
+@end
+
typedef NS_ENUM(NSUInteger, FLTSourceType) {
FLTSourceTypeCamera = 0,
FLTSourceTypeGallery = 1,
};
+/// Wrapper for FLTSourceType to allow for nullability.
+@interface FLTSourceTypeBox : NSObject
+@property(nonatomic, assign) FLTSourceType value;
+- (instancetype)initWithValue:(FLTSourceType)value;
+@end
+
@class FLTMaxSize;
@class FLTMediaSelectionOptions;
@class FLTSourceSpecification;
@@ -38,12 +50,12 @@
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)makeWithMaxSize:(FLTMaxSize *)maxSize
imageQuality:(nullable NSNumber *)imageQuality
- requestFullMetadata:(NSNumber *)requestFullMetadata
- allowMultiple:(NSNumber *)allowMultiple;
+ requestFullMetadata:(BOOL)requestFullMetadata
+ allowMultiple:(BOOL)allowMultiple;
@property(nonatomic, strong) FLTMaxSize *maxSize;
@property(nonatomic, strong, nullable) NSNumber *imageQuality;
-@property(nonatomic, strong) NSNumber *requestFullMetadata;
-@property(nonatomic, strong) NSNumber *allowMultiple;
+@property(nonatomic, assign) BOOL requestFullMetadata;
+@property(nonatomic, assign) BOOL allowMultiple;
@end
@interface FLTSourceSpecification : NSObject
@@ -61,11 +73,11 @@
- (void)pickImageWithSource:(FLTSourceSpecification *)source
maxSize:(FLTMaxSize *)maxSize
quality:(nullable NSNumber *)imageQuality
- fullMetadata:(NSNumber *)requestFullMetadata
+ fullMetadata:(BOOL)requestFullMetadata
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)pickMultiImageWithMaxSize:(FLTMaxSize *)maxSize
quality:(nullable NSNumber *)imageQuality
- fullMetadata:(NSNumber *)requestFullMetadata
+ fullMetadata:(BOOL)requestFullMetadata
completion:(void (^)(NSArray<NSString *> *_Nullable,
FlutterError *_Nullable))completion;
- (void)pickVideoWithSource:(FLTSourceSpecification *)source
@@ -77,7 +89,7 @@
FlutterError *_Nullable))completion;
@end
-extern void FLTImagePickerApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
+extern void SetUpFLTImagePickerApi(id<FlutterBinaryMessenger> binaryMessenger,
NSObject<FLTImagePickerApi> *_Nullable api);
NS_ASSUME_NONNULL_END
diff --git a/packages/image_picker/image_picker_ios/ios/Classes/messages.g.m b/packages/image_picker/image_picker_ios/ios/Classes/messages.g.m
index 2a24f83..1659cb8 100644
--- a/packages/image_picker/image_picker_ios/ios/Classes/messages.g.m
+++ b/packages/image_picker/image_picker_ios/ios/Classes/messages.g.m
@@ -1,16 +1,41 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v9.2.5), do not edit directly.
+// Autogenerated from Pigeon (v13.0.0), do not edit directly.
// See also: https://pub.dev/packages/pigeon
#import "messages.g.h"
+
+#if TARGET_OS_OSX
+#import <FlutterMacOS/FlutterMacOS.h>
+#else
#import <Flutter/Flutter.h>
+#endif
#if !__has_feature(objc_arc)
#error File requires ARC to be enabled.
#endif
+@implementation FLTSourceCameraBox
+- (instancetype)initWithValue:(FLTSourceCamera)value {
+ self = [super init];
+ if (self) {
+ _value = value;
+ }
+ return self;
+}
+@end
+
+@implementation FLTSourceTypeBox
+- (instancetype)initWithValue:(FLTSourceType)value {
+ self = [super init];
+ if (self) {
+ _value = value;
+ }
+ return self;
+}
+@end
+
static NSArray *wrapResult(id result, FlutterError *error) {
if (error) {
return @[
@@ -60,8 +85,8 @@
}
- (NSArray *)toList {
return @[
- (self.width ?: [NSNull null]),
- (self.height ?: [NSNull null]),
+ self.width ?: [NSNull null],
+ self.height ?: [NSNull null],
];
}
@end
@@ -69,8 +94,8 @@
@implementation FLTMediaSelectionOptions
+ (instancetype)makeWithMaxSize:(FLTMaxSize *)maxSize
imageQuality:(nullable NSNumber *)imageQuality
- requestFullMetadata:(NSNumber *)requestFullMetadata
- allowMultiple:(NSNumber *)allowMultiple {
+ requestFullMetadata:(BOOL)requestFullMetadata
+ allowMultiple:(BOOL)allowMultiple {
FLTMediaSelectionOptions *pigeonResult = [[FLTMediaSelectionOptions alloc] init];
pigeonResult.maxSize = maxSize;
pigeonResult.imageQuality = imageQuality;
@@ -81,12 +106,9 @@
+ (FLTMediaSelectionOptions *)fromList:(NSArray *)list {
FLTMediaSelectionOptions *pigeonResult = [[FLTMediaSelectionOptions alloc] init];
pigeonResult.maxSize = [FLTMaxSize nullableFromList:(GetNullableObjectAtIndex(list, 0))];
- NSAssert(pigeonResult.maxSize != nil, @"");
pigeonResult.imageQuality = GetNullableObjectAtIndex(list, 1);
- pigeonResult.requestFullMetadata = GetNullableObjectAtIndex(list, 2);
- NSAssert(pigeonResult.requestFullMetadata != nil, @"");
- pigeonResult.allowMultiple = GetNullableObjectAtIndex(list, 3);
- NSAssert(pigeonResult.allowMultiple != nil, @"");
+ pigeonResult.requestFullMetadata = [GetNullableObjectAtIndex(list, 2) boolValue];
+ pigeonResult.allowMultiple = [GetNullableObjectAtIndex(list, 3) boolValue];
return pigeonResult;
}
+ (nullable FLTMediaSelectionOptions *)nullableFromList:(NSArray *)list {
@@ -95,9 +117,9 @@
- (NSArray *)toList {
return @[
(self.maxSize ? [self.maxSize toList] : [NSNull null]),
- (self.imageQuality ?: [NSNull null]),
- (self.requestFullMetadata ?: [NSNull null]),
- (self.allowMultiple ?: [NSNull null]),
+ self.imageQuality ?: [NSNull null],
+ @(self.requestFullMetadata),
+ @(self.allowMultiple),
];
}
@end
@@ -184,11 +206,11 @@
return sSharedObject;
}
-void FLTImagePickerApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
+void SetUpFLTImagePickerApi(id<FlutterBinaryMessenger> binaryMessenger,
NSObject<FLTImagePickerApi> *api) {
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
- initWithName:@"dev.flutter.pigeon.ImagePickerApi.pickImage"
+ initWithName:@"dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage"
binaryMessenger:binaryMessenger
codec:FLTImagePickerApiGetCodec()];
if (api) {
@@ -202,7 +224,7 @@
FLTSourceSpecification *arg_source = GetNullableObjectAtIndex(args, 0);
FLTMaxSize *arg_maxSize = GetNullableObjectAtIndex(args, 1);
NSNumber *arg_imageQuality = GetNullableObjectAtIndex(args, 2);
- NSNumber *arg_requestFullMetadata = GetNullableObjectAtIndex(args, 3);
+ BOOL arg_requestFullMetadata = [GetNullableObjectAtIndex(args, 3) boolValue];
[api pickImageWithSource:arg_source
maxSize:arg_maxSize
quality:arg_imageQuality
@@ -217,7 +239,7 @@
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
- initWithName:@"dev.flutter.pigeon.ImagePickerApi.pickMultiImage"
+ initWithName:@"dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage"
binaryMessenger:binaryMessenger
codec:FLTImagePickerApiGetCodec()];
if (api) {
@@ -230,7 +252,7 @@
NSArray *args = message;
FLTMaxSize *arg_maxSize = GetNullableObjectAtIndex(args, 0);
NSNumber *arg_imageQuality = GetNullableObjectAtIndex(args, 1);
- NSNumber *arg_requestFullMetadata = GetNullableObjectAtIndex(args, 2);
+ BOOL arg_requestFullMetadata = [GetNullableObjectAtIndex(args, 2) boolValue];
[api pickMultiImageWithMaxSize:arg_maxSize
quality:arg_imageQuality
fullMetadata:arg_requestFullMetadata
@@ -245,7 +267,7 @@
}
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
- initWithName:@"dev.flutter.pigeon.ImagePickerApi.pickVideo"
+ initWithName:@"dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickVideo"
binaryMessenger:binaryMessenger
codec:FLTImagePickerApiGetCodec()];
if (api) {
@@ -270,7 +292,7 @@
/// Selects images and videos and returns their paths.
{
FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc]
- initWithName:@"dev.flutter.pigeon.ImagePickerApi.pickMedia"
+ initWithName:@"dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMedia"
binaryMessenger:binaryMessenger
codec:FLTImagePickerApiGetCodec()];
if (api) {
diff --git a/packages/image_picker/image_picker_ios/lib/src/messages.g.dart b/packages/image_picker/image_picker_ios/lib/src/messages.g.dart
index d9ce362..0ab7d1b 100644
--- a/packages/image_picker/image_picker_ios/lib/src/messages.g.dart
+++ b/packages/image_picker/image_picker_ios/lib/src/messages.g.dart
@@ -1,7 +1,7 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v9.2.5), do not edit directly.
+// Autogenerated from Pigeon (v13.0.0), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import
@@ -11,6 +11,17 @@
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
import 'package:flutter/services.dart';
+List<Object?> wrapResponse(
+ {Object? result, PlatformException? error, bool empty = false}) {
+ if (empty) {
+ return <Object?>[];
+ }
+ if (error == null) {
+ return <Object?>[result];
+ }
+ return <Object?>[error.code, error.message, error.details];
+}
+
enum SourceCamera {
rear,
front,
@@ -86,17 +97,17 @@
class SourceSpecification {
SourceSpecification({
required this.type,
- this.camera,
+ required this.camera,
});
SourceType type;
- SourceCamera? camera;
+ SourceCamera camera;
Object encode() {
return <Object?>[
type.index,
- camera?.index,
+ camera.index,
];
}
@@ -104,7 +115,7 @@
result as List<Object?>;
return SourceSpecification(
type: SourceType.values[result[0]! as int],
- camera: result[1] != null ? SourceCamera.values[result[1]! as int] : null,
+ camera: SourceCamera.values[result[1]! as int],
);
}
}
@@ -155,7 +166,7 @@
Future<String?> pickImage(SourceSpecification arg_source, MaxSize arg_maxSize,
int? arg_imageQuality, bool arg_requestFullMetadata) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickImage', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel.send(<Object?>[
arg_source,
@@ -182,7 +193,8 @@
Future<List<String?>> pickMultiImage(MaxSize arg_maxSize,
int? arg_imageQuality, bool arg_requestFullMetadata) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickMultiImage', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage',
+ codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel.send(
<Object?>[arg_maxSize, arg_imageQuality, arg_requestFullMetadata])
@@ -211,7 +223,7 @@
Future<String?> pickVideo(
SourceSpecification arg_source, int? arg_maxDurationSeconds) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickVideo', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickVideo', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel
.send(<Object?>[arg_source, arg_maxDurationSeconds]) as List<Object?>?;
@@ -235,7 +247,7 @@
Future<List<String?>> pickMedia(
MediaSelectionOptions arg_mediaSelectionOptions) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickMedia', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMedia', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList = await channel
.send(<Object?>[arg_mediaSelectionOptions]) as List<Object?>?;
diff --git a/packages/image_picker/image_picker_ios/pigeons/messages.dart b/packages/image_picker/image_picker_ios/pigeons/messages.dart
index be6b61a..0e69598 100644
--- a/packages/image_picker/image_picker_ios/pigeons/messages.dart
+++ b/packages/image_picker/image_picker_ios/pigeons/messages.dart
@@ -43,7 +43,7 @@
class SourceSpecification {
SourceSpecification(this.type, this.camera);
SourceType type;
- SourceCamera? camera;
+ SourceCamera camera;
}
@HostApi(dartHostTestHandler: 'TestHostImagePickerApi')
diff --git a/packages/image_picker/image_picker_ios/pubspec.yaml b/packages/image_picker/image_picker_ios/pubspec.yaml
index 121dedc..1de34ae 100755
--- a/packages/image_picker/image_picker_ios/pubspec.yaml
+++ b/packages/image_picker/image_picker_ios/pubspec.yaml
@@ -2,7 +2,7 @@
description: iOS implementation of the image_picker plugin.
repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_ios
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 0.8.8+3
+version: 0.8.8+4
environment:
sdk: ">=2.19.0 <4.0.0"
@@ -25,7 +25,7 @@
flutter_test:
sdk: flutter
mockito: 5.4.1
- pigeon: ^9.2.4
+ pigeon: ^13.0.0
topics:
- camera
diff --git a/packages/image_picker/image_picker_ios/test/test_api.g.dart b/packages/image_picker/image_picker_ios/test/test_api.g.dart
index ca1a7af..a2d0266 100644
--- a/packages/image_picker/image_picker_ios/test/test_api.g.dart
+++ b/packages/image_picker/image_picker_ios/test/test_api.g.dart
@@ -1,7 +1,7 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v9.2.5), do not edit directly.
+// Autogenerated from Pigeon (v13.0.0), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import
// ignore_for_file: avoid_relative_lib_imports
@@ -67,7 +67,7 @@
{BinaryMessenger? binaryMessenger}) {
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickImage', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage', codec,
binaryMessenger: binaryMessenger);
if (api == null) {
_testBinaryMessengerBinding!.defaultBinaryMessenger
@@ -77,28 +77,36 @@
.setMockDecodedMessageHandler<Object?>(channel,
(Object? message) async {
assert(message != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickImage was null.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage was null.');
final List<Object?> args = (message as List<Object?>?)!;
final SourceSpecification? arg_source =
(args[0] as SourceSpecification?);
assert(arg_source != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickImage was null, expected non-null SourceSpecification.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage was null, expected non-null SourceSpecification.');
final MaxSize? arg_maxSize = (args[1] as MaxSize?);
assert(arg_maxSize != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickImage was null, expected non-null MaxSize.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage was null, expected non-null MaxSize.');
final int? arg_imageQuality = (args[2] as int?);
final bool? arg_requestFullMetadata = (args[3] as bool?);
assert(arg_requestFullMetadata != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickImage was null, expected non-null bool.');
- final String? output = await api.pickImage(arg_source!, arg_maxSize!,
- arg_imageQuality, arg_requestFullMetadata!);
- return <Object?>[output];
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickImage was null, expected non-null bool.');
+ try {
+ final String? output = await api.pickImage(arg_source!,
+ arg_maxSize!, arg_imageQuality, arg_requestFullMetadata!);
+ return <Object?>[output];
+ } on PlatformException catch (e) {
+ return wrapResponse(error: e);
+ } catch (e) {
+ return wrapResponse(
+ error: PlatformException(code: 'error', message: e.toString()));
+ }
});
}
}
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickMultiImage', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage',
+ codec,
binaryMessenger: binaryMessenger);
if (api == null) {
_testBinaryMessengerBinding!.defaultBinaryMessenger
@@ -108,24 +116,31 @@
.setMockDecodedMessageHandler<Object?>(channel,
(Object? message) async {
assert(message != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickMultiImage was null.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage was null.');
final List<Object?> args = (message as List<Object?>?)!;
final MaxSize? arg_maxSize = (args[0] as MaxSize?);
assert(arg_maxSize != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickMultiImage was null, expected non-null MaxSize.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage was null, expected non-null MaxSize.');
final int? arg_imageQuality = (args[1] as int?);
final bool? arg_requestFullMetadata = (args[2] as bool?);
assert(arg_requestFullMetadata != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickMultiImage was null, expected non-null bool.');
- final List<String?> output = await api.pickMultiImage(
- arg_maxSize!, arg_imageQuality, arg_requestFullMetadata!);
- return <Object?>[output];
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMultiImage was null, expected non-null bool.');
+ try {
+ final List<String?> output = await api.pickMultiImage(
+ arg_maxSize!, arg_imageQuality, arg_requestFullMetadata!);
+ return <Object?>[output];
+ } on PlatformException catch (e) {
+ return wrapResponse(error: e);
+ } catch (e) {
+ return wrapResponse(
+ error: PlatformException(code: 'error', message: e.toString()));
+ }
});
}
}
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickVideo', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickVideo', codec,
binaryMessenger: binaryMessenger);
if (api == null) {
_testBinaryMessengerBinding!.defaultBinaryMessenger
@@ -135,22 +150,29 @@
.setMockDecodedMessageHandler<Object?>(channel,
(Object? message) async {
assert(message != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickVideo was null.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickVideo was null.');
final List<Object?> args = (message as List<Object?>?)!;
final SourceSpecification? arg_source =
(args[0] as SourceSpecification?);
assert(arg_source != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickVideo was null, expected non-null SourceSpecification.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickVideo was null, expected non-null SourceSpecification.');
final int? arg_maxDurationSeconds = (args[1] as int?);
- final String? output =
- await api.pickVideo(arg_source!, arg_maxDurationSeconds);
- return <Object?>[output];
+ try {
+ final String? output =
+ await api.pickVideo(arg_source!, arg_maxDurationSeconds);
+ return <Object?>[output];
+ } on PlatformException catch (e) {
+ return wrapResponse(error: e);
+ } catch (e) {
+ return wrapResponse(
+ error: PlatformException(code: 'error', message: e.toString()));
+ }
});
}
}
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ImagePickerApi.pickMedia', codec,
+ 'dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMedia', codec,
binaryMessenger: binaryMessenger);
if (api == null) {
_testBinaryMessengerBinding!.defaultBinaryMessenger
@@ -160,15 +182,22 @@
.setMockDecodedMessageHandler<Object?>(channel,
(Object? message) async {
assert(message != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickMedia was null.');
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMedia was null.');
final List<Object?> args = (message as List<Object?>?)!;
final MediaSelectionOptions? arg_mediaSelectionOptions =
(args[0] as MediaSelectionOptions?);
assert(arg_mediaSelectionOptions != null,
- 'Argument for dev.flutter.pigeon.ImagePickerApi.pickMedia was null, expected non-null MediaSelectionOptions.');
- final List<String?> output =
- await api.pickMedia(arg_mediaSelectionOptions!);
- return <Object?>[output];
+ 'Argument for dev.flutter.pigeon.image_picker_ios.ImagePickerApi.pickMedia was null, expected non-null MediaSelectionOptions.');
+ try {
+ final List<String?> output =
+ await api.pickMedia(arg_mediaSelectionOptions!);
+ return <Object?>[output];
+ } on PlatformException catch (e) {
+ return wrapResponse(error: e);
+ } catch (e) {
+ return wrapResponse(
+ error: PlatformException(code: 'error', message: e.toString()));
+ }
});
}
}