import 'package:flutter/material.dart'; import 'package:flutter_auth/models/config.dart'; import 'package:flutter_auth/pages/background.dart'; import 'package:flutter_auth/pages/register/register_page.dart'; import 'package:flutter_auth/views/already_have_an_account_check.dart'; import 'package:flutter_auth/views/responsive.dart'; import 'package:flutter_svg/flutter_svg.dart'; /// Description: login page /// Time : 08/24/2023 Thursday /// Author : liuyuqi.gov@msn.cn class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { @override Widget build(BuildContext context) { return Background( child: SingleChildScrollView( child: SafeArea( child: Responsive( mobile: buildLoginMobile(), desktop: buildLoginDesktop()), ), )); } Widget buildLoginDesktop() { return const Row( children: [ Expanded(child: LoginTop()), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( width: 450, child: LoginForm(), ) ], )) ], ); } Widget buildLoginMobile() { return const Column( mainAxisAlignment: MainAxisAlignment.center, children: [ LoginTop(), Row( children: [ Spacer(), Expanded( flex: 8, child: LoginForm(), ), Spacer() ], ) ], ); } } class LoginForm extends StatelessWidget { const LoginForm({super.key}); @override Widget build(BuildContext context) { return Form( child: Column( children: [ TextFormField( keyboardType: TextInputType.emailAddress, textInputAction: TextInputAction.next, cursorColor: kPrimaryColor, onSaved: (email) {}, decoration: const InputDecoration( hintText: "邮箱账户", prefixIcon: Padding( padding: EdgeInsets.all(defaultPadding), child: Icon(Icons.person), ), ), ), Padding( padding: const EdgeInsets.symmetric(vertical: defaultPadding), child: TextFormField( textInputAction: TextInputAction.done, obscureText: true, cursorColor: kPrimaryColor, decoration: const InputDecoration( hintText: "密码", prefixIcon: Padding( padding: EdgeInsets.all(defaultPadding), child: Icon(Icons.lock), ), ), ), ), const SizedBox(height: defaultPadding), Hero( tag: "login_btn", child: ElevatedButton( onPressed: () {}, child: const Text( "登录", ), ), ), const SizedBox(height: defaultPadding), AlreadyHaveAnAccountCheck( press: () { Navigator.push( context, MaterialPageRoute( builder: (context) { return const RegisterPage(); }, ), ); }, ), ], ), ); } } class LoginTop extends StatelessWidget { const LoginTop({super.key}); @override Widget build(BuildContext context) { return Column( children: [ const Text( "登录", style: TextStyle(fontWeight: FontWeight.bold), ), const SizedBox(height: defaultPadding * 2), Row( children: [ const Spacer(), Expanded( flex: 8, child: SvgPicture.asset("assets/icons/login.svg"), ), const Spacer(), ], ), const SizedBox(height: defaultPadding * 2), ], ); } }