📘
FlutterWebでFirebaseAuthのcurrentUserがリロード時にnullになることに対しての対処法
以下が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大学ですささんに教えてもらいました。
Discussion