| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- import 'package:deus_app/common/local/StoreHelper.dart';
- import 'package:deus_app/common/style/gsy_style.dart';
- import 'package:deus_app/common/utils/CommonUtils.dart';
- import 'package:deus_app/common/utils/DioUtil.dart';
- import 'package:deus_app/common/utils/ToastUtils.dart';
- import 'package:deus_app/generated/json/user_response_entity_helper.dart';
- import 'package:deus_app/model/login_response_entity.dart';
- import 'package:deus_app/model/user_response_entity.dart';
- import 'package:deus_app/page/home/home_page.dart';
- import 'package:deus_app/widget/gsy_flex_button.dart';
- import 'package:flutter/material.dart';
- import '../../common/utils/ConstantString.dart';
- import '../../generated/json/login_response_entity_helper.dart';
- // import 'package:deus_app/common/utils/common_utils.dart';
- // import 'package:deus_app/widget/animated_background.dart';
- // import 'package:deus_app/widget/gsy_flex_button.dart';
- // import 'package:deus_app/widget/gsy_input_widget.dart';
- // import 'package:deus_app/widget/particle/particle_widget.dart';
- /// 登录页
- /// Created by Ocean
- class LoginPage extends StatefulWidget {
- static const String sName = "login";
- const LoginPage({super.key});
- @override
- State createState() {
- return _LoginPageState();
- }
- }
- class _LoginPageState extends State<LoginPage> {
- //TextEditingController可以使用 text 属性指定初始值
- final TextEditingController _usernameController = TextEditingController();
- final TextEditingController _passwordController = TextEditingController();
- String _username = '18179442077', _password = '123456';
- @override
- Widget build(BuildContext context) {
- StoreHelper.init();
- return Scaffold(
- appBar: AppBar(
- centerTitle: true,
- backgroundColor: Color(0xFF4875EC),
- title: const Text(ConstantString.loginText,style: TextStyle(fontSize: 16)),
- ),
- body: Center(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.center,
- children: <Widget>[
- // _getRoundImage('images/logo.png', 100.0),
- // SizedBox(
- // height: 60,
- // ),
- _getUsernameInput(),
- _getPasswordInput(),
- SizedBox(
- height: 10,
- ),
- _getLoginButton(),
- ],
- ),
- ),
- );
- }
- Widget _getUsernameInput() {
- return _getInputTextField(
- TextInputType.number,
- controller: _usernameController,
- decoration: InputDecoration(
- hintText: "输入手机号",
- icon: Icon(
- Icons.mobile_friendly_rounded,
- size: 20.0,
- ),
- border: InputBorder.none,
- //使用 GestureDetector 实现手势识别
- suffixIcon: GestureDetector(
- child: Offstage(
- child: Icon(Icons.clear),
- offstage: _username == '',
- ),
- //点击清除文本框内容
- onTap: () {
- this.setState(() {
- _username = '';
- _usernameController.clear();
- });
- },
- ),
- ),
- //使用 onChanged 完成双向绑定
- onChanged: (value) {
- this.setState(() {
- _username = value;
- });
- },
- );
- }
- Widget _getPasswordInput() {
- return _getInputTextField(
- TextInputType.text,
- obscureText: true,
- controller: _passwordController,
- decoration: InputDecoration(
- hintText: "输入密码",
- icon: Icon(
- Icons.lock_open,
- size: 20.0,
- ),
- suffixIcon: GestureDetector(
- child: Offstage(
- child: Icon(Icons.clear),
- offstage: _password == '',
- ),
- onTap: () {
- this.setState(() {
- _password = '';
- _passwordController.clear();
- });
- },
- ),
- border: InputBorder.none,
- ),
- onChanged: (value) {
- this.setState(() {
- _password = value;
- });
- },
- );
- }
- //省略了上述列举的代码
- Widget _getInputTextField(
- TextInputType keyboardType, {
- FocusNode? focusNode,
- controller: TextEditingController,
- onChanged: Function,
- InputDecoration? decoration,
- bool obscureText = false,
- height = 50.0,
- }) {
- return Container(
- height: height,
- margin: EdgeInsets.all(10.0),
- child: Column(
- children: [
- TextField(
- keyboardType: keyboardType,
- focusNode: focusNode,
- obscureText: obscureText,
- controller: controller,
- decoration: decoration,
- onChanged: onChanged,
- ),
- Divider(
- height: 1.0,
- color: Colors.grey[400],
- ),
- ],
- ),
- );
- }
- Widget _getLoginButton() {
- return Container(
- height: 50,
- width: double.infinity,
- margin: EdgeInsets.all(10),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(4.0),
- ),
- child: GSYFlexButton(
- text: ConstantString.loginText,
- color: Color(0xFF4875EC),
- textColor: GSYColors.textWhite,
- fontSize: 16,
- onPress: login,
- ),
- );
- }
- login() async {
- if (!CommonUtils.validationInput(_username)) {
- showToast(ConstantString.loginNull);
- } else {
- var result = await DioUtil().request('auth/login',
- method: DioMethod.post,
- data: {'username': _username, 'password': _password});
- LoginResponseEntity loginResponseEntity =
- loginResponseEntityFromJson(LoginResponseEntity(), result);
- if (0 == loginResponseEntity.code) {
- StoreHelper.putStorage(ConstantString.token, loginResponseEntity.data.token);
- debugPrint(loginResponseEntity.data.token);
- getInfo();
- } else {
- showToast(loginResponseEntity.msg);
- }
- }
- }
- getInfo() async{
- var result = await DioUtil().request('user/current-user',
- method: DioMethod.post);
- UserResponseEntity entity=userResponseEntityFromJson(UserResponseEntity(), result);
- StoreHelper.putStorage(ConstantString.name, entity.data.name);
- StoreHelper.putStorage(ConstantString.orgName, entity.data.orgName);
- StoreHelper.putStorage(ConstantString.phone, entity.data.phone);
- await Navigator.pushNamed(context, HomePage.routeName);
- Navigator.pop(context);
- }
- }
|