0

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

1 回答 1

0

这取决于具体做什么LoginUtils().handleGoogleSignIn()。鉴于它是一个 Future,如果它的作用是显示选择 Google 帐户的对话框,它应该在对话框关闭后立即完成。我希望它能够成功完成,并且firebaseUser为 null - 这也是通过按下返回来弹出路由时的默认行为。

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

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

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

于 2019-08-06T10:52:37.217 回答