当用户单击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);
});
}
答案 0 :(得分:0)
这取决于LoginUtils().handleGoogleSignIn()
的确切功能。考虑到这是一个未来,如果要执行的操作是显示用于选择Google帐户的对话框,则该对话框应在关闭后立即完成。我希望它能成功完成,firebaseUser
为空-这也是通过按回车弹出路线时的默认行为。
因此,您只需要添加以下内容即可:
if (firebaseUser == null) {
setState(() {
_isLoading = false;
});
}
但是,如果在关闭对话框时Future根本无法完成,那么这就是您需要解决的问题。