Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[image_picker]: Document that limit is not always supported #147773

Open
hodfords-khai-mobile opened this issue May 3, 2024 · 7 comments · May be fixed by flutter/packages#6678
Open

[image_picker]: Document that limit is not always supported #147773

hodfords-khai-mobile opened this issue May 3, 2024 · 7 comments · May be fixed by flutter/packages#6678
Labels
found in release: 3.19 Found to occur in 3.19 found in release: 3.22 Found to occur in 3.22 has reproducible steps The issue has been confirmed reproducible and is ready to work on p: image_picker The Image Picker plugin. P2 Important issues not at the top of the work list package flutter/packages repository. See also p: labels. platform-android Android applications specifically platform-ios iOS applications specifically team-ecosystem Owned by Ecosystem team triaged-ecosystem Triaged by Ecosystem team

Comments

@hodfords-khai-mobile
Copy link

hodfords-khai-mobile commented May 3, 2024

Steps to reproduce

implement pickMultipleImage with limit 2.
I've tested on Pixel 7 - API 34, iPhone15 - iOS17, iPhone12 Pro max - iOS17.4.1

Expected results

can only choose a maximum of 2 images

Actual results

can choose more than 2 images (no limit)

Code sample

Code sample
Future<void> _takePhotoOnClicked(BuildContext context) async {
    final ImagePicker picker = ImagePicker();
    final List<XFile>? image = await picker.pickMultiImage(limit: 2);
  }

Screenshots or Video

Screenshots / Video demonstration

Screenshot_1714786749

@darshankawar darshankawar added the in triage Presently being triaged by the triage team label May 3, 2024
@darshankawar
Copy link
Member

@hodfords-khai-mobile
This was recently added as part of flutter/packages#6201
What plugin version and flutter version are you seeing this behavior on ? Also, are you seeing this on Android or iOS ?

@darshankawar darshankawar added the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label May 3, 2024
@hodfords-khai-mobile
Copy link
Author

@hodfords-khai-mobile This was recently added as part of flutter/packages#6201 What plugin version and flutter version are you seeing this behavior on ? Also, are you seeing this on Android or iOS ?

sorry for missing information
I'm using flutter 3.19.6, image_picker version 1.1.1
I've tested on both android and ios (both simulator and real device), all of them do not work

@github-actions github-actions bot removed the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label May 4, 2024
@darshankawar
Copy link
Member

Thanks for the update. I was able to replicate the reported behavior using image_picker plugin example running with latest stable and plugin version and upon adding a limit as below, but I was able to select more than 2 images which were displayed on screen.

final List<XFile> pickedFileList = await _picker.pickMultiImage(limit: 2,
            maxWidth: maxWidth,
            maxHeight: maxHeight,
            imageQuality: quality,

          );
stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.19.6, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.19.6 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 54e66469a9 (6 days ago), 2024-04-17 13:08:03 -0700
    • Engine revision c4cd48e186
    • Dart version 3.3.4
    • DevTools version 2.31.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.22.0-23.0.pre.43, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.22.0-23.0.pre.43 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8abc10689 (12 hours ago), 2024-05-05 13:01:23 -0400
    • Engine revision 624dcb987f
    • Dart version 3.5.0 (build 3.5.0-131.0.dev)
    • DevTools version 2.35.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.
      
[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.



@darshankawar darshankawar added platform-android Android applications specifically platform-ios iOS applications specifically p: image_picker The Image Picker plugin. package flutter/packages repository. See also p: labels. team-ecosystem Owned by Ecosystem team has reproducible steps The issue has been confirmed reproducible and is ready to work on found in release: 3.19 Found to occur in 3.19 found in release: 3.22 Found to occur in 3.22 and removed in triage Presently being triaged by the triage team labels May 6, 2024
@LinXunFeng
Copy link
Member

On Android, you need to set ImagePickerAndroid's useAndroidPhotoPicker to true for the limit parameter to be valid.

import 'package:image_picker_android/image_picker_android.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
// ···
  final ImagePickerPlatform imagePickerImplementation =
      ImagePickerPlatform.instance;
  if (imagePickerImplementation is ImagePickerAndroid) {
    imagePickerImplementation.useAndroidPhotoPicker = true;
  }

https://github.com/flutter/packages/blob/5ccddfc995e45b2dd08a7f07a985366dfeac3c1b/packages/image_picker/image_picker_android/example/lib/main.dart#L27-L34

I cannot reproduce this issue on iOS. Please check whether the version of image_picker_ios you are using is greater than or equal to 0.8.10 in the pubspec.lock. @hodfords-khai-mobile @darshankawar

@hodfords-khai-mobile
Copy link
Author

hodfords-khai-mobile commented May 7, 2024

On Android, you need to set ImagePickerAndroid's useAndroidPhotoPicker to true for the limit parameter to be valid.

import 'package:image_picker_android/image_picker_android.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
// ···
  final ImagePickerPlatform imagePickerImplementation =
      ImagePickerPlatform.instance;
  if (imagePickerImplementation is ImagePickerAndroid) {
    imagePickerImplementation.useAndroidPhotoPicker = true;
  }

https://github.com/flutter/packages/blob/5ccddfc995e45b2dd08a7f07a985366dfeac3c1b/packages/image_picker/image_picker_android/example/lib/main.dart#L27-L34

I cannot reproduce this issue on iOS. Please check whether the version of image_picker_ios you are using is greater than or equal to 0.8.10 in the pubspec.lock. @hodfords-khai-mobile @darshankawar

set ImagePickerAndroid's useAndroidPhotoPicker to true solved problem in android, also check again ios with image_picker_ios 0.8.10 also works. Thanks a lot.

But I found that it doesn't work on android 10 (API 29), is there any limitation

@LinXunFeng
Copy link
Member

@hodfords-khai-mobile Only when the API is >= 33, the limit can be guaranteed to take effect. Otherwise, it depends on whether the corresponding system app supports it.

image image

Related document: https://developer.android.google.cn/reference/kotlin/androidx/activity/result/contract/ActivityResultContracts.PickMultipleVisualMedia

@hodfords-khai-mobile
Copy link
Author

@LinXunFeng thank you for taking your time solving this problem. All clear. cc @darshankawar

@stuartmorgan stuartmorgan changed the title [image_picker]: Limit not working [image_picker]: Document that limit is not always supported May 8, 2024
@stuartmorgan stuartmorgan added P2 Important issues not at the top of the work list triaged-ecosystem Triaged by Ecosystem team labels May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
found in release: 3.19 Found to occur in 3.19 found in release: 3.22 Found to occur in 3.22 has reproducible steps The issue has been confirmed reproducible and is ready to work on p: image_picker The Image Picker plugin. P2 Important issues not at the top of the work list package flutter/packages repository. See also p: labels. platform-android Android applications specifically platform-ios iOS applications specifically team-ecosystem Owned by Ecosystem team triaged-ecosystem Triaged by Ecosystem team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants