[flutter]iOSでimage_pickerが落ちるようになったので対処する。

画像選択等に非常に便利なimage_pickerですが、flutterのバージョンアップ後から今まで動いていたコードが動かなくなりました。今回は原因を解析することができたのでご紹介。

動かなくなったコード

var pickedFile = await state.picker.pickImage(
                   source: ImageSource.camera,
                   maxWidth: ConstValues.addImageMaxWidth,
                   maxHeight: ConstValues.addImageMaxHeight,
                   imageQuality: ConstValues.addImageReQualityPercent);

動かなくなったコードは上記。ちなみにカメラからでもギャラリーから選択でも落ちるようになってました。

原因

実はimage_pickerはあるバージョンからiOSについてはバージョン依存のあるコントロールを使うようになっていました。flutterプロジェクト側のiOSターゲットが低い場合、この中の動作でimageQualityがうまく機能していないようです。

なのでimage_pickerの新しめなバージョンを使いたい場合にはiOSのビルドターゲットを14.0以上にする必要があります。

Runner.xcworkspaceをXCodeで開き、いろんなところのinfoにあるターゲットOSを14以上に変えていきます。自分は全て14.0で統一しました。

その後、

flutter clean
flutter pub get

を行ってからビルドすると、、問題なく使えるようになりました。