You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:project_telephony/utils/headers.dart';
import '../../constants/api.dart';
import '../../model/network/api_client.dart';
import '../../model/network/base_model.dart';
import '../widget/scaffold_theme_widget.dart';
class SetPasswordPage extends StatefulWidget {
const SetPasswordPage({Key? key}) : super(key: key);
@override
_SetPasswordPageState createState() => _SetPasswordPageState();
}
class _SetPasswordPageState extends State<SetPasswordPage> {
late TextEditingController _psdController;
late TextEditingController _psdTwiceController;
final _isOk=false;
static bool isLoginPassword(String input) {
RegExp mobile = RegExp(r"(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$");
return mobile.hasMatch(input);
}
@override
void initState() {
super.initState();
_psdController = TextEditingController();
_psdTwiceController = TextEditingController();
}
@override
void dispose() {
_psdController.dispose();
_psdTwiceController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return ScaffoldThemeWidget(
title: "设置密码",
bottom: "确认",
onTap: () async {
if(_psdController.text==_psdTwiceController.text){
BaseModel res = await apiClient.request(API.app.psdAdd,
data: {"password": _psdController.text});
if(res.code==0){
BotToast.showText(text: "设置成功");
}else{
BotToast.showText(text:"设置密码出错");
}
Get.back();
}else{
BotToast.showText(text: "两次输入的密码不相同");
}
},
isOpacity:_psdController.text.isNotEmpty&&isLoginPassword(_psdController.text),
child: Container(
padding: EdgeInsets.all(40.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
'新 密 码 ',
style: TextStyle(
fontSize: 30.sp,
),
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 10.w),
child: TextField(
maxLength: 16,
onChanged: (value){
_psdController.text=value;
_psdController.value = TextEditingValue(
text: _psdController.text,
selection:
TextSelection.fromPosition(TextPosition(
affinity: TextAffinity.downstream,
offset:
_psdController.text.length,
)));
setState((){});
},
inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[A-Za-z0-9_]'))],
controller: _psdController,
decoration: const InputDecoration(
counterText: '',
hintText: '填写新密码',
hintStyle: TextStyle(
color: Colors.black38,
),
),
),
)
,
),
],
),
20.hb,
Row(
children: [
Text(
'确认密码 ',
style: TextStyle(
fontSize: 30.sp,
),
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 10.w),
child: TextField(
onChanged: (value){
_psdTwiceController.text=value;
_psdTwiceController.value = TextEditingValue(
text: _psdTwiceController.text,
selection:
TextSelection.fromPosition(TextPosition(
affinity: TextAffinity.downstream,
offset:
_psdTwiceController.text.length,
)));
setState((){});
},
inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[A-Za-z0-9_]'))],
controller: _psdTwiceController,
decoration: const InputDecoration(
hintText: '再次确认密码',
hintStyle: TextStyle(
color: Colors.black38,
),
),
),
)
,
),
],
),
20.hb,
Text(
'密码必须是616位字母、数字、字符的组合',
style: TextStyle(
fontSize: 26.sp,
color: Colors.black38,
),
),
],
),
),
);
}
}