登录页-页面剖析
步骤:

①将无状态组件改成有状态组件-右键 重构    ②增加可点击的图标-iconButton    ③增加状态-showPassword  ④依据状态展现不同内容  ⑤给图标增加点击事件   ⑥测试   

问题及解决方案:
1、去注册色彩问题
增加style
2、高低间距问题?
增加Padding
3、边距/异形屏幕问题
应用SafeArea
4、垂直高度有余问题
应用listView代替Column
5、登录按钮宽度和色彩问题?
宽度:SizeBox或者父级固定宽度
色彩:手动设置
注册页-页面剖析
步骤:

①增加文件/pages/register.dart    ②将login.dart文件复制到register.dart    ③批改类名    ④批改title  ⑤在路由增加register   ⑥测试   ⑦优化登录注册跳转,应用Navigator.pushReplacementNamed

登录页面

import 'package:flutter/material.dart';import '../routes.dart';class LoginPage extends StatefulWidget {  const LoginPage({ Key key }) : super(key: key);  @override  _LoginPageState createState() => _LoginPageState();}class _LoginPageState extends State<LoginPage> {  bool showPassword = false;  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(title: Text('登录'),),      body: SafeArea(        minimum: EdgeInsets.all(30),        child: ListView(          children: [            TextField(              decoration: InputDecoration(                labelText: '用户名',                hintText: '请输出用户名'              ),            ),            Padding(padding: EdgeInsets.all(10)),            TextField(              obscureText: !showPassword,              decoration: InputDecoration(                labelText: '明码',                hintText: '请输出明码',                suffixIcon: IconButton(                  onPressed: (){                    setState(() {                      showPassword = !showPassword;                    });                  },                   icon: Icon(showPassword ? Icons.visibility_off : Icons.visibility),                )              ),            ),            Padding(padding: EdgeInsets.all(10)),            // ignore: deprecated_member_use            RaisedButton(              color: Colors.green,              onPressed: (){              },              child: Text('登录', style: TextStyle(color: Colors.white),),            ),            Padding(padding: EdgeInsets.all(10)),            Row(              mainAxisAlignment: MainAxisAlignment.center,              children: [                Text('还没有账号,'),                // ignore: deprecated_member_use                FlatButton(                  onPressed: (){                    Navigator.pushReplacementNamed(context, Routes.register);                  },                   child: Text('去注册',                  style: TextStyle(color: Colors.green),)                )              ],            )          ],        ),      ),    );  }}

注册页面

import 'package:flutter/material.dart';import '../routes.dart';class RegisterPage extends StatefulWidget {  const RegisterPage({ Key key }) : super(key: key);  @override  _RegisterPageState createState() => _RegisterPageState();}class _RegisterPageState extends State<RegisterPage> {  bool showPassword = false;  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(title: Text('注册'),),      body: SafeArea(        minimum: EdgeInsets.all(30),        child: ListView(          children: [            TextField(              decoration: InputDecoration(                labelText: '用户名',                hintText: '请输出用户名'              ),            ),            Padding(padding: EdgeInsets.all(10)),            TextField(              obscureText: !showPassword,              decoration: InputDecoration(                labelText: '明码',                hintText: '请输出明码'              ),            ),            Padding(padding: EdgeInsets.all(10)),            TextField(              obscureText: !showPassword,              decoration: InputDecoration(                labelText: '确认明码',                hintText: '请输出明码',              ),            ),            Padding(padding: EdgeInsets.all(10)),            // ignore: deprecated_member_use            RaisedButton(              color: Colors.green,              onPressed: (){              },              child: Text('注册', style: TextStyle(color: Colors.white),),            ),            Padding(padding: EdgeInsets.all(10)),            Row(              mainAxisAlignment: MainAxisAlignment.center,              children: [                Text('有账号,'),                // ignore: deprecated_member_use                FlatButton(                  onPressed: (){                    Navigator.pushReplacementNamed(context, Routes.login);                  },                   child: Text('去登录',                  style: TextStyle(color: Colors.green),)                )              ],            )          ],        ),      ),    );  }}

成果如下如: