📘

FlutterWebでFirebaseAuthのcurrentUserがリロード時にnullになることに対しての対処法

2022/03/26に公開

以下がmain.dartのサンプルコード。


void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await Firebase.initializeApp();

  // FirebaseUserのログイン状態が確定するまで待つ
  final firebaseUser = await FirebaseAuth.instance.userChanges().first;
  
  runApp(MyApp());
}

↓こいつがポイントで、ここで、ログインしてれば値が返るし、ログインしてなければnullが必ず返るので、これが終わってからrunAppすれば、以降はcurrentUserに正しい値が入る。

// FirebaseUserのログイン状態が確定するまで待つ
final firebaseUser = await FirebaseAuth.instance.userChanges().first;

つまり、これ以降は FirebaseAuth.instance.currentUser != null; でログインしてるかどうかを判別可能になる。

これはアプリだと普通だけど、FlutterWebだとブラウザをリロードした際一瞬nullになって2秒後くらいに値が復活するから困っていた。

ちなみにFlutter大学ですささんに教えてもらいました。

Flutter大学

Discussion