🏙️
【Flutter】image_pickerの複数画像選択(pickMultiImage)に枚数上限を設定してもAndroidだけ機能しない件
はじめに
image_picker
はFlutterで画像選択機能を提供する便利なパッケージです。このパッケージを使用すると、ギャラリーやカメラから画像を選択し、アプリに取り込むことができます。
また、pickMultiImage
メソッドを使用することで複数画像の選択をすることができ、limit
パラメータに値を渡すことで、選択できる画像の最大枚数を制限することができます。
そこでAndroidのみ制限がかからないエラーに遭遇したので対処した内容を書きます。
image_picker
の使い方は割愛します。私の書いた記事ではないですが、下記の別記事参照お願いします。
バージョン
- Flutter 3.19.5
- image_picker ^1.0.7
コード
この記事では上限枚数を5枚として設定します。
final ImagePicker _picker = ImagePicker();
final List<XFile>? images = await _picker.pickMultiImage(limit: 5);
エラー内容
下記の画像の通りiosでは画面に白いマスクがかかり、6枚以上選択できなくなっています。しかし、Androidでは6枚以上選択できるようになってしまっています。
ios
Android
結論
調べてみたところ、Android 13から導入されたPhoto Picker APIがデフォルトではfalseで有効になっていないので、ここを有効にすることでlimitの値を適用させて制限をかけれるようになるとのこと。
まずはpubspec.yamlに下記を記述します。
pubspec.yaml
dependencies:
image_picker: ^1.0.7
+ image_picker_android: ^0.8.12
+ image_picker_platform_interface: ^2.10.0
main.dartにも下記コードを追記します。
main.dart
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
+ import 'package:image_picker_android/image_picker_android.dart';
+ import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
void main() {
+ final imagePickerImplementation = ImagePickerPlatform.instance;
+ if (imagePickerImplementation is ImagePickerAndroid) {
+ imagePickerImplementation.useAndroidPhotoPicker = true;
+ }
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Image Picker Sample',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
結果
6枚目を選択しようとタップすると「5件まで選択できます」というポップアップが出て選択できなくなってます。
最後に
日本語で調べましたが、この記事書いてる時点ではヒットせず。
英語で調べたら下記のissuesが出てきたので参考にさせていただきました。
参考URL
Discussion