instruction_app/lib/screens/auth/login_page.dart

118 lines
3.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:instruction_app/screens/home_page.dart';
class AuthorizationPage extends StatefulWidget {
const AuthorizationPage({super.key});
@override
State<AuthorizationPage> createState() => _AuthorizationPage();
}
class _AuthorizationPage extends State<AuthorizationPage> {
final TextEditingController _loginController = new TextEditingController();
final TextEditingController _passwordController = new TextEditingController();
final _formKey = GlobalKey<FormState>();
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),
),
],
)
);
}
}