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 '../../common/utils/LoadingDialogHelper.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 { //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: [ // _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 { LoadingDialogHelper.showLoading(context); 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 { LoadingDialogHelper.dismissLoading(context); showToast(loginResponseEntity.msg); } } } getInfo() async{ var result = await DioUtil().request('user/current-user', method: DioMethod.post); LoadingDialogHelper.dismissLoading(context); UserResponseEntity entity=userResponseEntityFromJson(UserResponseEntity(), result); if(entity.code==0){ 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); }else{ showToast(entity.msg); } } }