123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- 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<LoginPage> createState() => _LoginPageState();
- }
- class _LoginPageState extends State<LoginPage> {
- @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),
- ],
- );
- }
- }
|