import 'package:flutter/material.dart'; import 'package:instruction_app/screens/home_page.dart'; class AuthorizationPage extends StatefulWidget { const AuthorizationPage({super.key}); @override State createState() => _AuthorizationPage(); } class _AuthorizationPage extends State { final TextEditingController _loginController = new TextEditingController(); final TextEditingController _passwordController = new TextEditingController(); final _formKey = GlobalKey(); final borederRadius = BorderRadius.all(Radius.circular(10)); bool passwordVisible = false; void _login(){ if (_formKey.currentState!.validate()) { final String login = _loginController.text; final String password = _passwordController.text; if (login == 'admin' && password == '123456') { Navigator.of(context).push(MaterialPageRoute( builder: (ctx) => HomePage()) ); } } } String? _validatePassword(String? password){ if (password == null || password.isEmpty) return 'Введите пароль'; if (password != '123456') return 'Пароль: 123456'; return null; } String? _validateLogin(String? login){ if (login == null || login.isEmpty) return 'Введите логин'; if (login != 'admin') return 'Логин: admin'; return null; } @override void dispose() { super.dispose(); _loginController.dispose(); _passwordController.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Авторизация"), ), body: Padding( padding: EdgeInsets.all(80), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ _buildFormWidget(context), SizedBox(height: 25,), TextButton( style: ButtonStyle( backgroundColor: WidgetStateProperty.all(Colors.blue), foregroundColor: WidgetStateProperty.all(Colors.white), ), onPressed: () => _login(), child: Text("Войти") ) ], ) ) ); } Widget _buildFormWidget(BuildContext context) { return Form( key: _formKey, child: Column( children: [ TextFormField( controller: _loginController, decoration: InputDecoration( prefixIcon: Icon(Icons.account_circle), border: OutlineInputBorder( borderRadius: borederRadius ), labelText: 'Логин'), validator: (text) => _validateLogin(text), ), SizedBox(height: 25,), TextFormField( controller: _passwordController, obscureText: !passwordVisible, decoration: InputDecoration( prefixIcon: Icon(Icons.lock), border: OutlineInputBorder( borderRadius: borederRadius ), labelText: 'Пароль', suffixIcon: IconButton( icon: Icon( passwordVisible ? Icons.visibility : Icons.visibility_off), onPressed: () => setState(() => passwordVisible = !passwordVisible), )), validator: (text) => _validatePassword(text), ), ], ) ); } }