取消Google登录对话框时,如何处理进度指标



当用户单击Google Sign in按钮时,"进度指示器"设置为true,并且应用程序显示对话框以选择用户帐户。如果用户单击对话框或系统返回按钮外,则进度指示器会继续显示。

在哪里以及如何设置_isLoading = false,以使进度指标消失?

Container(
              padding: EdgeInsets.all(_isLoading ? 20.0 : 0.0),
              width: 75,
              height: 75,
              child: _isLoading
                  ? CircularProgressIndicator()
                  : IconButton(
                      icon: Image.asset('assets/google.png'),
                      onPressed: () => _handleGoogleSignIn()),
            )

...

Future<Null> _handleGoogleSignIn() async {
    setState(() {
      _isLoading = true;
    });
    LoginUtils().handleGoogleSignIn().then((firebaseUser) {
      _postSignInAction(firebaseUser);
    }).catchError((exception) {
      _handleLoginException(exception);
    });
  }

这取决于LoginUtils().handleGoogleSignIn()的功能。鉴于这是未来,如果它的作用是显示对话框以选择Google帐户,则该对话框应在驳回对话框后立即完成。我希望它能成功完成,而firebaseUser为null-这是默认行为,也可以通过向后弹出路由。

因此,您只需要添加以下内容:

if (firebaseUser == null) {
  setState(() {
    _isLoading = false;
  });
}

但是,如果解散对话框时,未来根本无法完成,那么这就是您需要解决的问题。

最新更新