login_page.dart 2.6 KB

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