Support Enter to submit login

This commit is contained in:
2026-04-15 11:20:30 +08:00
parent 98666ab1ea
commit 146f05388e
2 changed files with 19 additions and 0 deletions

View File

@@ -17,8 +17,17 @@ class LoginPage extends StatefulWidget {
class _LoginPageState extends State<LoginPage> {
final _usernameController = TextEditingController();
final _passwordController = TextEditingController();
final _passwordFocusNode = FocusNode();
bool _isLoading = false;
@override
void dispose() {
_usernameController.dispose();
_passwordController.dispose();
_passwordFocusNode.dispose();
super.dispose();
}
void _handleLogin() async {
if (_usernameController.text.isEmpty || _passwordController.text.isEmpty) {
ScaffoldMessenger.of(
@@ -108,6 +117,8 @@ class _LoginPageState extends State<LoginPage> {
// Fields
TextField(
controller: _usernameController,
textInputAction: TextInputAction.next,
onSubmitted: (_) => _passwordFocusNode.requestFocus(),
decoration: InputDecoration(
labelText: "Username",
prefixIcon: Icon(Icons.person),
@@ -119,7 +130,14 @@ class _LoginPageState extends State<LoginPage> {
SizedBox(height: 16),
TextField(
controller: _passwordController,
focusNode: _passwordFocusNode,
obscureText: true,
textInputAction: TextInputAction.done,
onSubmitted: (_) {
if (!_isLoading) {
_handleLogin();
}
},
decoration: InputDecoration(
labelText: "Password",
prefixIcon: Icon(Icons.lock),