flutter-login-2

作者: iPhone | 来源:发表于2019-07-02 14:44 被阅读0次

    优化

    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('登录'),),
                        )
                    ),
                  ),
                ],
              ),
            ],
          ),
        );
      }
    }
    

    相关文章

      网友评论

        本文标题:flutter-login-2

        本文链接:https://www.haomeiwen.com/subject/gnczcctx.html