Flutter布局锦囊---绑定手机页
设计给的效果如下:
拿到设计后,先把整体拆分成几个部分:
- “顶部导航栏”,标题+取消按钮+跳过按钮的应用栏。
- “手机号输入框”,用于获取手机号码的圆角边框输入字段。
- “验证码输入框”,用于获取验证码的圆角边框输入字段,还包括获取验证码的按钮。
- “提交按钮”,在满足条件后让用户点击的提交按钮。
然后就可以开始进行编码了。
第1步:绘制组件树
第2步:实现“顶部导航栏”
下面的代码导入了一堆东西,大概说一下都是些什么吧。../common/first_navigation.dart
是《Flutter布局锦囊—简单的应用栏》,不过针对这个需求做了一些小改动。../common/doodle_button.dart
是《Flutter布局锦囊—涂鸦风格按钮》。../common/round_form_field.dart
是《Flutter布局锦囊—圆框的表单字段》。widgets/login_form_code.dart
是《Flutter布局锦囊—验证码倒计时》。
import 'package:flutter/material.dart';
import '../common/first_navigation.dart';
import '../common/doodle_button.dart';
import '../common/round_form_field.dart';
import 'widgets/login_form_code.dart';/// 自定义的绑定页面组件。
class Binding extends StatefulWidget {@override_BindingState createState() => _BindingState();
}
下面代码的主体是《Flutter布局锦囊—简单的应用栏》中自定义的一级导航(firstNavigation
)组件,不过这里你要把行动(actions
)和主导(leading
)属性设置成可以配置的,如果没有则为空值(null
)。
/// 与自定义的绑定页面组件关联的状态子类。
class _BindingState extends State<Binding> {/// 手机号表单字段的控制器。final _phoneController = TextEditingController();/// 验证码表单字段的控制器。final _codeController = TextEditingController();/// 发送验证码按钮是否可用。bool _codeAvailable = false;/// 手机号表单字段是否符合格式。bool _phoneActivation = false;/// 验证码表单字段是否符合格式。bool _codeActivation = false;@overrideWidget build(BuildContext context) {return Scaffold(appBar: firstNavigation('绑定手机',// 墨水瓶(`InkWell`)组件,响应触摸的矩形区域。leading: InkWell(child: Text(' 取消 ',style: TextStyle(color: Color(0xFF777777),fontSize: 16.0,),),onTap: (){Navigator.of(context).pop();},),actions: InkWell(child: Text(' 跳过 ',style: TextStyle(color: Color(0xFFFF6B47),fontSize: 16.0,),),onTap: (){Navigator.of(context).pushNamedAndRemoveUntil('/', (Route<dynamic> route) => false);},),),body: ListView(padding: EdgeInsets.symmetric(horizontal: 20.0),children: <Widget>[// TODO: 第3步:实现“手机号输入框”// TODO: 第4步:实现“验证码输入框”// TODO: 第5步:实现“提交按钮”],),);}
}
第3步:实现“手机号输入框”
下面代码的主体是《Flutter布局锦囊—圆框的表单字段》中自定义的圆框表单字段(RoundFormField
)组件。这个就可以直接使用了,不用像上面那一步修改代码。
// TODO: 第3步:实现“手机号输入框”Container(padding: EdgeInsets.symmetric(vertical: 20.0),child: Text('绑定手机后可以直接使用手机号码登录',style: TextStyle(color: Color(0xFF777777),fontSize: 14.0,),),),RoundFormField(hintText: '请输入手机号',textEditingController: _phoneController,checkCallback: (value){if(value.trim().length == 11) {_codeAvailable = true;_phoneActivation = true;} else {_codeAvailable = false;_phoneActivation = false;}setState(() {});},),SizedBox(height: 20),
第4步:实现“验证码输入框”
下面代码的主体是《Flutter布局锦囊—圆框的表单字段》中自定义的圆框表单字段(RoundFormField
)组件,再佐以《Flutter布局锦囊—验证码倒计时》中自定义的倒计时(LoginFormCode
)组件作为调料。它们共同完成了验证码输入框。
// TODO: 第4步:实现“验证码输入框”Stack(children: <Widget>[RoundFormField(hintText: '请输入验证码',textEditingController: _codeController,checkCallback: (value){if(value.trim().length == 6) {_codeActivation = true;} else {_codeActivation = false;}setState(() {});},),// 对齐(`Align`)组件,用于将其子项与其自身对齐,并根据子级的大小自行调整大小。Align(// 高度因子(`heightFactor`)属性,如果为非空值,则将其高度设置为子组件高度乘以此系数。heightFactor: 2.0,// 对准(`alignment`)属性,如何调整子组件。alignment: Alignment.centerRight,child: LoginFormCode(countdown: 60,available: _codeAvailable,onTapCallback: () {// 根据需求写提交的过程以及后续操作~},),),],),
第5步:实现“提交按钮”
下面代码的主体是《Flutter布局锦囊—涂鸦风格按钮》中自定义的涂鸦按钮(DoodleButton
)组件,注意要通过setState(() {});
来改变按钮的可点击状态。
// TODO: 第5步:实现“提交按钮”SizedBox(height: 40),DoodleButton(promptText: '绑定',activation: _phoneActivation && _codeActivation,onTapCallback: (){setState(() {_codeActivation = false;});// 根据需求写提交的过程以及后续操作~setState(() {_codeActivation = true;});},),
第6步:还原效果
Flutter布局锦囊---绑定手机页相关推荐
- Flutter布局锦囊---完善信息页
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "用户昵称输入",获取用户输入的昵称信息. "用户头像选取",获取用户选取作为头像的图片. " ...
- Flutter布局锦囊---手机号登录页
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "运营位",使用自定义的旋转木马滑块组件实现可以滚动的运营位. "登录表单",使用自定义的登录表单组件 ...
- Flutter布局锦囊---蜡笔画的表单
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "手机号输入框",使用自定义的登录表单字段组件实现的输入框. "验证码输入框",使用自定义的登录表单验 ...
- Flutter布局锦囊---带彩条的文本字段
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "文本输入框",使用文本字段(TextField)组件实现的输入框. "状态指示条",使用容器(Con ...
- Flutter布局锦囊---涂鸦风格按钮
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "可点击框",使用堆栈(Stack)组件布局的可点击区域. "底部矩形",用来衬托"主要矩形 ...
- Flutter布局锦囊---轮播图片与滑块
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "运营位",可以通过左右滑动来切换图片. "进度条",显示"运营位"当前位置的进度 ...
- Flutter布局锦囊---有背景图的头像选择
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "获取相册图片",Flutter团队开发的图片选择器(image_picker)插件,从手机相册中获取图片. " ...
- Flutter布局锦囊---圆框的表单字段
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "黑色圆角边框",因为文本字段(TextField)组件的没有符合需求的样式,所以要自己做一个边框. "文本输入 ...
- Flutter布局锦囊---男女性别单选
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "点击操作",感应用户选择性别的区域. "选择性别男",性别男的选择区域,点击会更新图片和样式. &q ...
最新文章
- linux java平台,如何下载和安装用于 Linux 平台的 Java
- jquery学习手记(7)Data_utility_index方法
- node-inspector 在chrome里调试node代码
- SAP 销售云支持的丰富的报表显示类型
- python实现手机号归属地相关信息查询
- 【jQuery笔记Part1】07-jQuery操作css-添加删除切换类、开关灯泡案例
- UVM入坑系列笔记(一)
- function core.php is missing,PHP代码
- 相机模型与标定(八)--传统相机标定算法简介
- ic启动器怎么导入模组_icmod模组管理器最新版下载-ICMOD管理器(Inner Core)下载v1.5-阵 安卓版-西西软件下载...
- 《我的眼睛--图灵识别》第九章:训练:制作识别字库
- Mac改变系统截图存储路径
- 数据可视化~matplotlib显示多个子图
- Docker从0到1
- 关于虚拟机的十个基本小技巧
- Win10家庭版Hyper-V出坑(完美卸载,冲突解决以及Device Guard问题)
- Mole and Abandoned Mine
- 计算机组成原理-算术逻辑单元ALU
- IC卡电表及用电信息管理系统
- 航空母舰与钢铁侠助阵,这么硬核的智能锁你见过么
热门文章
- N---Exponentiation
- Excel Cookbook by Eric
- 轻量化神经网络篇(SqueezeNet、Xception、MobileNet、ShuffleNet)
- 如何运行从github拉取的vue项目
- 【编程珠玑】第十二章 取样问题
- kubernetes集群应用部署实例
- leetCode-数组:Remove Duplicates from Sorted Array
- springmvc 监听器getWriter() has already been called for this response问题
- Android 使用Webview时,有时抛 java.lang.Throwable: EventHub.removeMessages(int what = 107) warning...
- 求职历程之-----我的求职信