Commit 8d2f6f19 authored by laishanqi's avatar laishanqi

完成注册页面

parent f73555e3
......@@ -12,5 +12,6 @@ class AppColors{
static const scaffoldBackgroundColor = 0xffffffff;
/// 分割线颜色
static const dividerColor = 0xffeeeeee;
/// 控件禁用时的颜色
static const disabledColor = 0xffdddddd;
}
\ No newline at end of file
......@@ -16,15 +16,32 @@ class _RegisterState extends State {
final phoneController = TextEditingController();
final codeController = TextEditingController();
final passwordController = TextEditingController();
var isShowPassword = false;
var isShowClean = false;
@override
Widget build(BuildContext context) {
// 获取上一个页面的传值
List<String> args = ModalRoute.of(context).settings.arguments;
void initState() {
super.initState();
phoneController.text = args.first;
nameController.addListener(() {
setState(() {});
});
phoneController.addListener(() {
setState(() {});
});
codeController.addListener(() {
setState(() {});
});
passwordController.addListener(() {
print("密码 ${passwordController.text}");
setState(() {
isShowClean = passwordController.text.isNotEmpty;
});
});
}
@override
Widget build(BuildContext context) {
return registerWidget();
}
......@@ -52,28 +69,131 @@ class _RegisterState extends State {
elevation: 0,
),
body: Container(
margin: EdgeInsets.fromLTRB(16, 16, 16, 0),
margin: EdgeInsets.fromLTRB(16, 0, 16, 0),
child: ListView(
children: [
_getTextField("请输入姓名",nameController),
_getTextField("请输入手机号码",phoneController),
Stack(children: [
_getTextField("请输入验证码",codeController),
// Positioned(child: )
_getTextField(TextInputType.text,"请输入姓名", nameController, 10, false),
_getTextField(TextInputType.number,"请输入手机号码", phoneController, 11, false),
Stack(
children: [
_getTextField(TextInputType.number,"请输入验证码", codeController, 8, false),
Positioned(
child: Text("获取验证码"),
right: 16,
top: 20,
)
],
),
_getPassWordField(),
Text(
"密码由9-16位大小写字母、数字加特殊符号组成",
style:
TextStyle(color: Color(AppColors.mainColor), fontSize: 12),
),
Container(
margin: EdgeInsets.only(top: 20),
height: 40,
child: ElevatedButton(
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.disabled)) {
return Color(AppColors.disabledColor);
}
return Color(AppColors.mainColor);
}),
),
child: Text(
"注册",
style: TextStyle(color: Colors.white),
),
onPressed: checkIsAllEmpty() ? null : onRegisterClick),
)
],
)),
);
}
],),
onRegisterClick() {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("注册")));
}
_getTextField("请输入9-16位密码",passwordController),
],
/// 校验是否全部为空
bool checkIsAllEmpty() {
if (phoneController.text.isNotEmpty &&
nameController.text.isNotEmpty &&
codeController.text.isNotEmpty &&
passwordController.text.isNotEmpty) {
return false;
}
return true;
}
Widget _getPassWordField() {
TextField password =
_getTextField(TextInputType.number,"请输入9-16位密码", passwordController, 16, isShowPassword);
return Stack(
children: [
password,
Positioned(
right: 32,
top: 10,
child: Visibility(
visible: isShowClean,
child: IconButton(
icon: Icon(Icons.close),
onPressed: () {
setState(() {
passwordController.text = "";
});
}),
)),
Positioned(
right: 0,
top: 10,
child: Visibility(
visible: isShowClean,
child: IconButton(
icon: isShowPassword
? Icon(Icons.visibility_off)
: Icon(Icons.visibility),
onPressed: () {
setState(() {
isShowPassword = !password.obscureText;
});
},
))),
],
);
}
/// 输入框
Widget _getTextField(String hintText,TextEditingController controller){
Widget _getTextField(TextInputType keyboardType,String hintText, TextEditingController controller,
int maxLength, bool isPassword) {
return TextField(
keyboardType: keyboardType,
obscureText: isPassword,
buildCounter: (context, {currentLength, isFocused, maxLength}) => null,
maxLength: maxLength,
autofocus: false, // 自动获取焦点
decoration: InputDecoration(
labelStyle: TextStyle(height: 0.5),
//装饰
alignLabelWithHint: true,
contentPadding: EdgeInsets.only(top: 20, bottom: 10),
enabledBorder: UnderlineInputBorder(
// 默认输入状态的下划线边框
borderSide:
BorderSide(color: Color(AppColors.dividerColor), width: 0.5)),
focusedBorder: UnderlineInputBorder(
// 获取焦点后
borderSide:
BorderSide(color: Color(AppColors.mainColor), width: 0.5)),
errorBorder: UnderlineInputBorder(
// 错误的时候
borderSide: BorderSide(color: Colors.red, width: 0.5)),
hintText: hintText,
// labelText: hintText.substring(3)
),
controller: controller,
);
......
......@@ -5,7 +5,7 @@ import 'package:netrain_flutter_app/laishanqi/mqtt/MqttClient.dart';
import 'package:netrain_flutter_app/laishanqi/netrain/Http/HttpUtil.dart';
import 'package:netrain_flutter_app/laishanqi/netrain/user/RegisterPage.dart';
import '../HomePage.dart';
import '../PharmacistHomePage.dart';
import '../../../common/Images.dart';
/// 登录页
......@@ -21,15 +21,18 @@ class _LoginState extends State<LoginPage> {
final codeController = TextEditingController();
@override
Widget build(BuildContext context) {
print("loginPage.dart initState");
void initState() {
super.initState();
var mqtt = MqttClient();
mqtt.connect();
HttpUtil.get(HttpUtil.global_config).then((Response value) {
Fluttertoast.showToast(msg: "global_config 请求成功 ");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment