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

如何在Flutter接入Firebase的登录流程中添加CircularProgressIndicator?

实现步骤
  • 首先在登录页的State类中定义加载状态变量
bool _isLoading = false;
  • 改造现有的signIn方法,在登录流程的各个节点更新加载状态,同时修复原代码的语法问题:
Future<void> signIn(String email, String password) async {
  if (_formKey.currentState!.validate()) {
    setState(() {
      _isLoading = true;
    });
    try {
      final _userDoc = await _auth.signInWithEmailAndPassword(
        email: email, 
        password: password
      );
      checkUserType(_userDoc.user!.uid);
    } catch (e) {
      print('Error: $e');
      // 此处可自行扩展错误提示逻辑,比如弹出Toast、SnackBar等
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }
}
  • 修改页面build逻辑,登录按钮位置根据_isLoading状态切换展示内容:
// 替换原有登录按钮代码
_isLoading 
  ? const CircularProgressIndicator()
  : ElevatedButton(
    onPressed: () => signIn(emailController.text, passwordController.text),
    child: const Text('登录'),
  )

可选优化:如果需要禁止用户在加载过程中重复点击提交,可以给表单加上absorbPointer属性绑定_isLoading,加载时自动拦截所有表单点击事件


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:03