0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter】shared_preferencesでshared_preference_iosが廃止された際のエラー対応

Last updated at Posted at 2023-02-25

事象概要

現在参画しているPJにてshared_preferencesを2023/02現在の最新(2.0.18)に上げたところ、iOSでのみSharedPreferences利用時に以下のようなエラーが吐かれるようになった。

MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)

Androidでは問題無くshared_preferencesが利用できるため原因調査に至った。

原因 (恐らく)

shared_preferencesに依存するiOSライブラリに起因するもの?

Ver 2.0.16でiOSに依存しているライブラリshared_preferences_iosが廃止され、shared_preferences_foundationというライブラリに移行しているが、pub getで取得した依存関係にshared_preferences_iosが残っており、getAll関数が見つからないと怒られている可能性がある。

※shared_preferences_iosは既に DISCONTINUED となった模様。

対応策

調べたところ現状以下2点の対応策が候補に挙がり、1で今の所問題無さそうな為1を採用して経過観察することにしました。一応どちらの方法でもエラーは回避できる模様。

1. SharedPreferenceのインスタンス生成のタイミングで各OSでregisterWith()をコール

2. shared_preferencesを2.0.15に固定

SharedPreferences.setMockInitialValues({});をセットすると動くよという記事もあるが、流石にこれはテスト用の関数という公式の記載もあるので、恐らく誤用な気がします。

まとめ

Ver 2.0.18の状態でflutter clean等を繰り返しても変わらず、本記事投稿に至りました。

もしかするとローカル環境の依存状態に起因している可能性もありますが、
同様の事象が発生した方は一度試してみるといいかもしれません。

或いはこういった対応策が最善ですよ、等あれば是非コメント頂けますと幸いです。

参考

以下は該当エラーのissue一覧

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?