From 2c047d9b215ccd6f66c56f3258a4d185c351625c Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sat, 4 Jan 2020 09:16:29 +0100 Subject: [PATCH] Fix login loading dialog --- lib/views/login.dart | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/views/login.dart b/lib/views/login.dart index e7876ac..4b86478 100644 --- a/lib/views/login.dart +++ b/lib/views/login.dart @@ -19,6 +19,7 @@ class _LoginPageState extends State { String usernameError; String passwordError; String serverError; + bool loading = false; void login(BuildContext context) async { MatrixState matrix = Matrix.of(context); @@ -46,28 +47,28 @@ class _LoginPageState extends State { } try { - matrix.showLoadingDialog(context); + setState(() => loading = true); if (!await matrix.client.checkServer(homeserver)) { setState(() => serverError = "Homeserver is not compatible."); - return matrix.hideLoadingDialog(); + return setState(() => loading = false); } } catch (exception) { setState(() => serverError = "Connection attempt failed!"); - return matrix.hideLoadingDialog(); + return setState(() => loading = false); } try { await matrix.client .login(usernameController.text, passwordController.text); } on MatrixException catch (exception) { setState(() => passwordError = exception.errorMessage); - return matrix.hideLoadingDialog(); + return setState(() => loading = false); } catch (exception) { setState(() => passwordError = exception.toString()); - return matrix.hideLoadingDialog(); + return setState(() => loading = false); } await Matrix.of(context).saveAccount(); - matrix.hideLoadingDialog(); + setState(() => loading = false); } @override @@ -130,12 +131,14 @@ class _LoginPageState extends State { ), ), child: RawMaterialButton( - onPressed: () => login(context), + onPressed: () => loading ? null : login(context), splashColor: Colors.grey, - child: Text( - "Login", - style: TextStyle(color: Colors.white, fontSize: 20.0), - ), + child: loading + ? CircularProgressIndicator() + : Text( + "Login", + style: TextStyle(color: Colors.white, fontSize: 20.0), + ), ), ), ),