取消Google登录对话框后如何处理进度指示器?

时间:2019-08-06 05:55:43

标签: flutter google-signin

当用户单击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);
    });
  }

1 个答案:

答案 0 :(得分:0)

这取决于LoginUtils().handleGoogleSignIn()的确切功能。考虑到这是一个未来,如果要执行的操作是显示用于选择Google帐户的对话框,则该对话框应在关闭后立即完成。我希望它能成功完成,firebaseUser为空-这也是通过按回车弹出路线时的默认行为。

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

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

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