当用户单击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;
});
}
但是,如果解散对话框时,未来根本无法完成,那么这就是您需要解决的问题。