login_page.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_google_map/dao/user_dao.dart';
  3. import 'package:flutter_google_map/models/user_model.dart';
  4. /// Description: login page
  5. /// Time : 07/09/2023 Sunday
  6. /// Author : liuyuqi.gov@msn.cn
  7. class LoginPage extends StatefulWidget {
  8. const LoginPage({super.key});
  9. @override
  10. State<LoginPage> createState() => _LoginPageState();
  11. }
  12. class _LoginPageState extends State<LoginPage> {
  13. TextEditingController userNameController = TextEditingController();
  14. TextEditingController passwordController = TextEditingController();
  15. @override
  16. Widget build(BuildContext context) {
  17. return Scaffold(
  18. body: Center(
  19. child: SizedBox(
  20. width: 400,
  21. height: 400,
  22. child: Column(
  23. children: [
  24. TextFormField(
  25. controller: userNameController,
  26. decoration: const InputDecoration(
  27. hintText: "请输入用户名",
  28. ),
  29. validator: (v) {
  30. if (v == null) {
  31. return "用户名不能为空";
  32. } else {
  33. return v.trim().isNotEmpty ? null : "用户名不能为空";
  34. }
  35. },
  36. ),
  37. TextFormField(
  38. controller: passwordController,
  39. decoration: const InputDecoration(
  40. hintText: "请输入密码",
  41. ),
  42. obscureText: true,
  43. validator: (v) {
  44. if (v == null) {
  45. return "密码不能为空";
  46. } else {
  47. return v.trim().length > 6 ? null : "密码不能少于6位";
  48. }
  49. },
  50. ),
  51. ElevatedButton(
  52. onPressed: () {
  53. Navigator.of(context).pushNamedAndRemoveUntil(
  54. "/",
  55. (Route<dynamic> route) => false,
  56. );
  57. },
  58. child: const Text("登录"),
  59. ),
  60. ],
  61. ),
  62. ),
  63. ));
  64. }
  65. void login() async {
  66. UserDao userDao = UserDao();
  67. // form validate user and pwd then login
  68. if (Form.of(context).validate()) {
  69. UserModel user =
  70. await userDao.login(userNameController.text, passwordController.text);
  71. } else {
  72. ScaffoldMessenger.of(context).showSnackBar(
  73. const SnackBar(
  74. content: Text("用户名或密码错误"),
  75. ),
  76. );
  77. }
  78. }
  79. }