diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md index 5f0ee50c6c7..c87ceb07905 100644 --- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md +++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 2.11.0 +* Adds `getMultiVideoWithOptions` method. * Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. ## 2.10.1 diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart index a31fbbab322..51074c864b2 100644 --- a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart +++ b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart @@ -322,6 +322,21 @@ abstract class ImagePickerPlatform extends PlatformInterface { return pickedImages ?? []; } + /// Returns a [List] with the videos that were picked. + /// + /// The videos come from the [ImageSource.gallery]. + /// + /// The `options` argument controls additional settings that can be used when + /// picking a video. See [MultiVideoPickerOptions] for more details. + /// + /// If no videos were picked, returns an empty list. + Future> getMultiVideoWithOptions({ + MultiVideoPickerOptions options = const MultiVideoPickerOptions(), + }) { + throw UnimplementedError( + 'getMultiVideoWithOptions() has not been implemented.'); + } + /// Returns true if the implementation supports [source]. /// /// Defaults to true for the original image sources, `gallery` and `camera`, diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/multi_video_picker_options.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/multi_video_picker_options.dart new file mode 100644 index 00000000000..66149b9c3d3 --- /dev/null +++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/multi_video_picker_options.dart @@ -0,0 +1,23 @@ +// 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. + +import 'package:flutter/foundation.dart'; + +/// Specifies options for picking multiple videos. +@immutable +class MultiVideoPickerOptions { + /// Creates an instance with the given options. + const MultiVideoPickerOptions({ + this.maxDuration, + this.limit, + }); + + /// The maximum duration of the picked video. + final Duration? maxDuration; + + /// The maximum number of videos that can be selected. + /// + /// This value may be ignored by platforms that cannot support it. + final int? limit; +} diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart index 0339d98b575..9d8fde59302 100644 --- a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart +++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart @@ -10,6 +10,7 @@ export 'lost_data_response.dart'; export 'media_options.dart'; export 'media_selection_type.dart'; export 'multi_image_picker_options.dart'; +export 'multi_video_picker_options.dart'; export 'picked_file/picked_file.dart'; export 'retrieve_type.dart'; diff --git a/packages/image_picker/image_picker_platform_interface/pubspec.yaml b/packages/image_picker/image_picker_platform_interface/pubspec.yaml index 22280b9d797..1ebf4ebd08e 100644 --- a/packages/image_picker/image_picker_platform_interface/pubspec.yaml +++ b/packages/image_picker/image_picker_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/image_picker/ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.10.1 +version: 2.11.0 environment: sdk: ^3.6.0 diff --git a/packages/image_picker/image_picker_platform_interface/test/image_picker_platform_test.dart b/packages/image_picker/image_picker_platform_interface/test/image_picker_platform_test.dart index 89dc1ae382d..c25f7ae9fe5 100644 --- a/packages/image_picker/image_picker_platform_interface/test/image_picker_platform_test.dart +++ b/packages/image_picker/image_picker_platform_interface/test/image_picker_platform_test.dart @@ -76,6 +76,18 @@ void main() { fakePath); }); }); + + test( + 'Default implementation of getMultiVideoWithOptions should throw ' + 'unimplemented error', () { + final FakeCameraDelegatingImagePickerPlatform implementation = + FakeCameraDelegatingImagePickerPlatform(); + + expect( + () => implementation.getMultiVideoWithOptions(), + throwsUnimplementedError, + ); + }); } class FakeImagePickerPlatform extends ImagePickerPlatform {}