You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中firebase_ui_auth的RegisterScreen无法触发AuthStateChangeAction事件

Firebase UI Auth RegisterScreen中AuthStateChangeAction无法触发的问题

问题说明

使用firebase_ui_auth的RegisterScreen完成用户注册时,配置的AuthStateChangeAction<SignedIn>事件始终无法触发,但原生FirebaseAuth.instance.authStateChanges()监听可以正常捕获状态变化;同时在SignInScreen登录场景下,AuthStateChangeAction能按预期执行。

复现代码

import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider;
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:flutter/material.dart';

import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: RegisterScreen(
        providers: [EmailAuthProvider()],
        actions: [
          AuthStateChangeAction<SignedIn>((context, state) {
            print('AuthStateChangeAction()');
          }),
        ],
      ),
      floatingActionButton: IconButton(
        icon: const Icon(Icons.close),
        onPressed: () async {
          print('FirebaseAuth.instance.signOut()');
          await FirebaseAuth.instance.signOut();
        },
      ),
    );
  }
}

替代解决方案

可以通过监听原生FirebaseAuth的状态变化来替代AuthStateChangeAction,在页面的initState方法中添加如下代码:

@override
void initState() {
  super.initState();
  FirebaseAuth.instance.authStateChanges().listen((user) {
    print('FirebaseAuth.instance.authStateChanges()');
    // 在此处理注册成功后的业务逻辑
  });
}

内容的提问来源于stack exchange,提问作者Tymoteusz Chmielewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:01:56