login_page.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_tracker/dio/login_dao.dart';
  3. import 'package:flutter_tracker/model/config.dart';
  4. import 'package:flutter_tracker/model/user_model.dart';
  5. import 'package:shared_preferences/shared_preferences.dart';
  6. class LoginPage extends StatefulWidget {
  7. const LoginPage({Key key}) : super(key: key);
  8. @override
  9. _LoginPageState createState() => _LoginPageState();
  10. }
  11. class _LoginPageState extends State<LoginPage> {
  12. final TextEditingController _usernameController = TextEditingController();
  13. final TextEditingController _passwordController = TextEditingController();
  14. final _formKey = GlobalKey<FormState>();
  15. String _username;
  16. String _password;
  17. @override
  18. void initState() {
  19. super.initState();
  20. loadData();
  21. }
  22. @override
  23. Widget build(BuildContext context) {
  24. return Scaffold(
  25. appBar: AppBar(title: Text('登录')),
  26. body: Form(
  27. key: _formKey,
  28. child: Column(
  29. children: <Widget>[
  30. TextFormField(
  31. controller: _usernameController,
  32. decoration: InputDecoration(
  33. labelText: '用户名',
  34. hintText: '请输入用户名',
  35. ),
  36. validator: (value) {
  37. if (value.isEmpty) {
  38. return '用户名不能为空';
  39. }
  40. return null;
  41. },
  42. onSaved: (value) {
  43. _username = value;
  44. },
  45. ),
  46. TextFormField(
  47. controller: _passwordController,
  48. decoration: InputDecoration(
  49. labelText: '密码',
  50. hintText: '请输入密码',
  51. ),
  52. obscureText: true,
  53. validator: (value) {
  54. if (value.isEmpty) {
  55. return '密码不能为空';
  56. }
  57. return null;
  58. },
  59. onSaved: (value) {
  60. _password = value;
  61. },
  62. ),
  63. RaisedButton(
  64. child: Text('登录'),
  65. onPressed: () {
  66. login();
  67. },
  68. ),
  69. ],
  70. ),
  71. ));
  72. }
  73. void loadData() async {
  74. SharedPreferences prefs = await SharedPreferences.getInstance();
  75. String username = prefs.getString('username');
  76. String password = prefs.getString('password');
  77. if (username != null && password != null) {
  78. _usernameController.text = username;
  79. _passwordController.text = password;
  80. }
  81. }
  82. void login() async {
  83. if (_formKey.currentState.validate()) {
  84. _formKey.currentState.save();
  85. UserModel userModel = await LoginDao.login(_username, _password);
  86. if (userModel.username == "") {
  87. Config.pref.setString('username', _username);
  88. Config.pref.setString('password', _password);
  89. Config.pref.setBool('isLogin', true);
  90. Navigator.of(context).pushReplacementNamed('/home');
  91. } else {}
  92. }
  93. }
  94. }