From 248b77e4c576646e5bc7c87334e24bfa32907ead Mon Sep 17 00:00:00 2001 From: istalri Date: Fri, 5 Jun 2026 20:02:29 +0200 Subject: [PATCH] CleanUp and last fixes - Borders only get overwritten in error case - Navigator.pop(context) -> Navigator.of(context).pop() - Confirm homeserver und Sign in button disabled as long as error is active --- lib/pages/login_page.dart | 61 +++++++++++++------------------ lib/pages/select_server_page.dart | 32 ++++++++-------- 2 files changed, 41 insertions(+), 52 deletions(-) diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index 3b2b8a6..a432155 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -50,7 +50,7 @@ class LoginPage extends HookConsumerWidget { ); isLoggingIn.value = false; } else { - Navigator.pop(context); + Navigator.of(context).pop(); } passwordFocusNode.requestFocus(); isLoggingIn.value = false; @@ -60,7 +60,7 @@ class LoginPage extends HookConsumerWidget { appBar: Appbar( leading: IconButton( icon: Icon(Icons.arrow_back), - onPressed: () => Navigator.pop(context), + onPressed: () => Navigator.of(context).pop(), ), ), body: AlertDialog( @@ -81,22 +81,16 @@ class LoginPage extends HookConsumerWidget { }, decoration: InputDecoration( label: Text("Username"), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), + focusedBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide(color: theme.colorScheme.error), + ) + : null, + enabledBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide(color: theme.colorScheme.error), + ) + : null, ), controller: username, ), @@ -113,22 +107,16 @@ class LoginPage extends HookConsumerWidget { selectAllOnFocus: true, decoration: InputDecoration( label: Text("Password"), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), + focusedBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide(color: theme.colorScheme.error), + ) + : null, + enabledBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide(color: theme.colorScheme.error), + ) + : null, ), controller: password, obscureText: true, @@ -136,7 +124,10 @@ class LoginPage extends HookConsumerWidget { ], ), actions: [ - TextButton(onPressed: () => tryLogin(), child: Text("Sign In")), + TextButton( + onPressed: hasError.value ? null : () => tryLogin(), + child: Text("Sign In"), + ), ], ), ); diff --git a/lib/pages/select_server_page.dart b/lib/pages/select_server_page.dart index 8a8ac9f..9ef1d49 100644 --- a/lib/pages/select_server_page.dart +++ b/lib/pages/select_server_page.dart @@ -113,28 +113,26 @@ class SelectServerPage extends HookConsumerWidget { decoration: InputDecoration( labelText: "Homeserver URL (e.g. matrix.org)", hintText: "e.g. matrix.org", - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - width: hasError.value ? 4 : 2, - color: hasError.value - ? theme.colorScheme.error - : theme.colorScheme.primary, - ), - ), + focusedBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide( + color: theme.colorScheme.error, + ), + ) + : null, + enabledBorder: hasError.value + ? OutlineInputBorder( + borderSide: BorderSide( + color: theme.colorScheme.error, + ), + ) + : null, ), ), ), IconButton.filled( tooltip: "Confirm homeserver choice", - onPressed: isLoading.value + onPressed: isLoading.value || hasError.value ? null : () => setHomeserver( Uri.tryParse(homeserverUrl.text),