优化
1.解决键盘遮挡的问题
2.解决编辑框添加clearbutton
3.添加提示框
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomepage(title: '登录',)
);
}
}
class MyHomepage extends StatefulWidget {
final String title;
MyHomepage({
Key key,
this.title
}) : super(key : key);
@override
_MyHomepageState createState() => _MyHomepageState();
}
class _MyHomepageState extends State<MyHomepage> {
bool _phoneState,_pwdState = false;
String _checkStr;
TextEditingController _phonecontroller = TextEditingController();
TextEditingController _pwdcontroller = TextEditingController();
void _checkPhone(){
if(_phonecontroller.text.isNotEmpty && _pwdcontroller.text.trim().length == 11){
_phoneState = true;
}
else {
_phoneState = false;
}
}
void _checkPwd(){
if (_pwdcontroller.text.isNotEmpty &&
_pwdcontroller.text.trim().length >= 6 &&
_pwdcontroller.text.trim().length <= 10) {
_pwdState = true;
} else {
_pwdState = false;
}
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Center(
child: Text('登录页面'),
),
),
body: ListView(
children: <Widget>[
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.all(16),
child: Image.asset('images/icon_lau.jpeg',fit: BoxFit.fill,scale: 2,),
),
Padding(
padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 15.0),
child: Stack(
alignment: Alignment(1.0, 1.0),
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Padding(padding: EdgeInsets.fromLTRB(0.0, 0.0, 5.0, 0.0),
child: Image.asset('images/icon_user.jpg',width: 40,height: 40,fit: BoxFit.fill,),
),
Expanded(
child: TextField(
decoration: InputDecoration(
helperText: '请输入用户名',
),
)
),
IconButton(icon: Icon(Icons.clear,color: Colors.black45,), onPressed: (){
print('清除按钮');
_pwdcontroller.clear();
}),
],
),
],
)
),
Padding(
padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Padding(padding: EdgeInsets.fromLTRB(0.0, 0.0, 5.0, 0.0),
child: Image.asset('images/icon_pass.jpg',width: 40,height: 40,fit: BoxFit.fill,),
),
Expanded(
child: TextField(
decoration: InputDecoration(
helperText: '请输密码',
suffixIcon: IconButton(
icon: Icon(Icons.clear,color: Colors.black45,),
onPressed: (){
_pwdcontroller.clear();
}),
),
obscureText: true,
)
),
],
)
),
Container(
width: 300,
child: Card(
color: Colors.blue,
elevation: 16.0,
child: Center(
child: MaterialButton(onPressed: (){
print('疯狂登录吧');
_checkPhone();
_checkPwd();
if(_phoneState && _pwdState) {
_checkStr = '页面跳转下期见咯!';
}
else {
if(!_phoneState) {
_checkStr = '请输入11位手机号!';
}
if(!_pwdState){
_checkStr = '请输入6-10位密码!';
}
}
showDialog(context: context,
barrierDismissible: false,
child: AlertDialog(
title: Text('提示'),
content: Text(_checkStr),
actions: <Widget>[
FlatButton(onPressed: (){
Navigator.pop(context);
}, child: Text('确定')),
],
),
);
},
child: Text('登录'),),
)
),
),
],
),
],
),
);
}
}
网友评论