【Flutter】 Sharedpreferencesの値がnullの場合の分岐が、分岐しない

前提

Sharedpreferencesを使って値が保存されているかどうかの分岐を作りましたが、
nullの値が返ってくるのにもかかわらず、
null分岐のほうに流れてくれません。

nullじゃなかったらnullじゃない場合の変数を用いてfirebaseから値を持ってきたいのですが
nullなのにnullじゃないほうに流れてエラーになります。

実現したいこと

nullの場合は、if(sharedprefs == null)以下に、
nullじゃない場合はif(sharedprefs != null)以下に流れてほしい。

発生している問題・エラーメッセージ

例外が発生しました
StateError (Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist)

該当のソースコード

SharedPrefs

class SharedPrefs { static SharedPreferences? _preferences; static Future<void> setPrefsInstance() async { //インスタンス生成 _preferences ??= await SharedPreferences.getInstance(); } //端末に書き込む static Future<void> setUid(String uid) async { await _preferences!.setString("uid", uid); } //読み込む static fetchUid() { return _preferences!.getString("uid") ?? null; } static revomeUid() { return _preferences?.remove("uid"); } }

provider.model

class Provider extends ChangeNotifier { Future checkRole() async { String? role; final SharedUid = SharedPrefs.fetchUid(); print("firebaseのuidは"); print(uid); print(uid.runtimeType); print("shredprefeceのuidは"); print(SharedUid); print(SharedUid.runtimeType); if (SharedUid != null || SharedUid != "" || SharedUid != "null") { final DocumentSnapshot? sharedprefdocumentSnapshot = await FirebaseFirestore.instance .collection("users") .doc(SharedUid) .get(); print("このユーザーのfirebaseの値のroleは"); print(role); role = sharedprefdocumentSnapshot?["role"]; //ここでビルドが止まり、記載のエラー文が出ます。 } else if (SharedUid == null ||     SharedUid == "" ||     SharedUid == null.toString()) { print("uidはセットしました"); SharedPrefs.setUid(uid.toString()); print(uid); } } }

試したこと

if分岐の際、型がStringなのでnullと読み込まない原因かと考えて、変換しましたが
しっかり分岐してくれません。

補足情報(FW/ツールのバージョンなど)

Flutter 3.0.5

コメントを投稿

0 コメント