Flutter 底部跟随键盘并且页面跟随键盘
1.应用的控件
Scaffold 设置 resizeToAvoidBottomInset: true, // 防止底部被键盘遮挡
stack 设置 children 1 为ListView 内部有TextField可跟随键盘 //正文
children2 为 Align 设置属性 alignment: Alignment.bottomCenter, / 底部内容
2.用例
class TextFieldPage extends StatelessWidget {var result = 'Navigator';String platformVersion = 'Unknown';TextEditingController rechargeController = TextEditingController();bool s = true;@overrideWidget build(BuildContext context) {var fa = new FocusNode();// https://book.flutterchina.club/chapter3/input_and_form.html#_3-7-2-%E8%A1%A8%E5%8D%95form// checkBox flutter_sujian_select 1.0.1return new Scaffold(resizeToAvoidBottomInset: true, // 防止底部被键盘遮挡appBar: new AppBar(title: new Text('$result'),),body: GestureDetector(onTap: () {FocusScope.of(context).requestFocus(FocusNode());},child: Stack(children: [Container(child: ListView(children: [Checkbox(onChanged: (b) {s = !s;},value: s,splashRadius: 44,mouseCursor: MouseCursor.defer,),Checkbox(value: s,onChanged: (b) {s = !s;}),new TextField(focusNode: fa,controller: rechargeController,// maxLength: 30,//最大长度,设置此项会让TextField右下角有一个输入数量的统计字符串//最大行数maxLines: 1,//是否自动更正autocorrect: true,onSubmitted: (str) {print("sub");},// 键盘 提交按钮监听textInputAction: TextInputAction.send,/*是否自动对焦autofocus: false,// 秘密隐藏obscureText: false,*///是否是密码textAlign: TextAlign.start,//文本对齐方式style: TextStyle(fontSize: 16, color: Colors.black87),//输入文本的样式onChanged: (text) {//内容改变的回调print('change $text');},cursorWidth: 2.0,cursorColor: Colors.black87,//光标颜色,dragStartBehavior: DragStartBehavior.down,// this.dragStartBehavior = DragStartBehavior.down,scrollPadding: EdgeInsets.all(20),inputFormatters: [// FilteringTextInputFormatter.allow(RegExp(r'[0-9]')), // 只允许输入样式FilteringTextInputFormatter.deny(RegExp("[0-9]")),// 不允许的样式// 不允许输入的LengthLimitingTextInputFormatter(5)],decoration: new InputDecoration(enabled: true,labelText: "输入账户",// 悬浮提示\hintText: "phone",hintStyle: new TextStyle(fontSize: 16),// prefixIcon: Icon(Icons.phone_android),// 左侧内图标// 左侧外图标icon: Icon(Icons.phone_android),suffixIcon: GestureDetector(child: Icon(Icons.navigate_next),onTap: () {print("print clcik");},),errorText: null,// 设置为null errorBorder 失效/* border: new OutlineInputBorder(borderRadius: BorderRadius.circular(8.0),borderSide: BorderSide(color: Colors.red)),*/ // border: new UnderlineInputBorder( //OutlineInputBorder 边框 // borderSide: BorderSide(color: Colors.black87 ), // borderRadius: BorderRadius.circular(7.0) // ),border: new UnderlineInputBorder(borderSide: BorderSide(color: Colors.black12)),// 聚焦时focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.blue)),disabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.black12)),// 未聚焦时enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.black)),errorBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.red))),),SizedBox(height: 20,),Container(height: 143,margin: EdgeInsets.symmetric(horizontal: 25),padding: EdgeInsets.all(10),decoration: BoxDecoration(borderRadius: BorderRadius.circular(8.0),border: Border.all(color: Colors.black12, width: 1)),child: TextField(maxLines: 5,maxLength: 200,decoration: InputDecoration(contentPadding: EdgeInsets.all(10),hintText: "输入内容",counterStyle: TextStyle(color: Colors.blue),border: InputBorder.none/* border: OutlineInputBorder(borderRadius: BorderRadius.circular(8.0))*/),),),SizedBox(height: 20,),Container(margin: EdgeInsets.symmetric(horizontal: 25),child: TextFormField(keyboardType: TextInputType.visiblePassword,maxLines: 1,autofillHints: <String>[AutofillHints.password],scrollPadding: EdgeInsets.all(25),textAlign: TextAlign.start,decoration: InputDecoration(filled: true,isCollapsed: true,contentPadding:EdgeInsets.symmetric(horizontal: 29, vertical: 11),fillColor: CommonColors.color_99,hintText: "请输入域帐号密码",hintStyle:TextStyle(fontSize: 14, color: CommonColors.text_33),border: OutlineInputBorder(borderRadius: BorderRadius.circular(10),borderSide: BorderSide.none),),),),Container(height: 56.0,decoration: BoxDecoration(border:Border(bottom: BorderSide(color: Colors.black12, width: 1)),),child: Container(child: Row(mainAxisAlignment: MainAxisAlignment.start,children: <Widget>[Container(height: double.infinity,margin: EdgeInsets.only(top: 8),alignment: Alignment.topLeft,child: Text("¥",style: TextStyle(fontSize: 24, color: CommonColors.text_66),),),SizedBox(width: 8.0),Expanded(child: TextField(autofocus: true,keyboardType: TextInputType.number,style: TextStyle(color: CommonColors.text_33, fontSize: 48),decoration: InputDecoration(border: InputBorder.none,),),)],),),),new Container(width: 200,child: TextField(// maxLength: 30,//最大长度,设置此项会让TextField右下角有一个输入数量的统计字符串maxLines: 1,//最大行数autocorrect: true,//是否自动更正autofocus: false,//是否自动对焦obscureText: false,//是否是密码textAlign: TextAlign.start,//文本对齐方式style: TextStyle(fontSize: 16, color: Colors.black87),//输入文本的样式//| inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],//允许的输入格式inputFormatters: [// FilteringTextInputFormatter.allow(RegExp(r'[0-9]')), // 只允许输入样式FilteringTextInputFormatter.deny(RegExp("[0-9]")),// 不允许输入的LengthLimitingTextInputFormatter(5)],onChanged: (text) {//内容改变的回调print('change $text');},cursorWidth: 2.0,cursorColor: Colors.black87,//光标颜色,dragStartBehavior: DragStartBehavior.down,// this.dragStartBehavior = DragStartBehavior.down,scrollPadding: EdgeInsets.all(20),decoration: new InputDecoration(hintText: "搜索",hintStyle: new TextStyle(fontSize: 16),prefixIcon: Icon(Icons.search),border: InputBorder.none),),),SizedBox(height: 35,),ElevatedButton(onPressed: () {fa.unfocus();},child: Text("test")),],),margin: EdgeInsets.only(bottom: 60),),Align(alignment: Alignment.bottomCenter,child: Container(height: 60,margin: EdgeInsets.symmetric(horizontal: 25),padding: EdgeInsets.all(10),decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.circular(8.0),border: Border.all(color: Colors.black12, width: 1)),child: TextField(maxLines: 1,maxLength: 200,decoration: InputDecoration(contentPadding: EdgeInsets.all(10),hintText: "输入内容",counterStyle: TextStyle(color: Colors.blue),border: InputBorder.none/* border: OutlineInputBorder(borderRadius: BorderRadius.circular(8.0))*/),),),)],),),);} }
Flutter 底部跟随键盘并且页面跟随键盘相关推荐
- Flutter底部导航栏BottomNavigationBar页面状态保持解决方案
网易云[玩转大前端]配套课程 EDU配套 教程 Flutter开发的点滴积累系列文章 一行代代码置灰应用?对就是这么干 在实际应用开发中,一般应用的首页面会有这种结构,在Flutter应用开发中,有多 ...
- Flutter 解决App登录页面软键盘遮挡住登录按钮或顶起底部控件的问题
文章目录 1 软键盘问题点对比效果图 2 解决软键盘将底部布局顶上去的问题 2.1 方式一:修改resizeToAvoidBottomInset属性 2.2 方式二:使用可滑动布局 3 弹出软键盘时滚 ...
- 解决uni-app微信小程序input输入框在底部时,键盘弹起页面整体上移问题
问题描述: 最近的做了个客服聊天的功能,遇到一个问题如下: 在手机上点击聊天页底部的input框后,键盘弹起同时页面会整体上移,标题栏被顶上去了.如下图: 问题分析: input 获取焦点时会自动调起 ...
- Vue出现弹出层时,禁止底部页面跟随滑动
背景:最近在写一个vue项目,当出现弹出层时,发现底部页面跟随滚动,但是产品不想要这种效果,于是找各种资料,发现很多说法,但是试了试,发现有的根本就不行,比如说有人提出用vue中提供的@touchmo ...
- h5键盘把页面顶走了_微信h5开发的坑
记一次微信h5开发的坑... 正常的效果如下: 本身用的cube-ui开发,上半部分是自己写的,下边用的是better-scroll,为了滑动更流畅.这个页面前边有一个登录页面,登录之后就会跳到这个首 ...
- 解决h5底部输入框在ios被软键盘顶飞 软键盘消失还下不来
好吧,其实不是顶飞,准确点说应该是h5页面fiexed定位在底部的输入框在ios软键盘弹起的时候软键盘跟输入框有时会有一段悬空的距离,无法紧贴.在安卓机子上则没有这样的情况. 解决方法是通过h5的sc ...
- Flutter仿微信,支付宝密码输入框+自定义键盘
大家好,我又来了. 刚用Flutter做完一个金融项目,当中使用到了类似于微信,和支付宝的那种密码输入框,然后为了安全一点也自己实现了自定义的键盘,今天跟大家分享一波 效果如下图所示: Flutter ...
- 微信浏览器H5页面软键盘关闭导致页面空缺的问题
微信6.7.4 H5页面里的select,input软键盘弹起的时候页面会上移,软键盘关闭页面不会下移.导致页面空缺了一部分. 微信6.7.3及其它版本不会有这个问题!页面会随着软键盘关闭而下移恢复正 ...
- uniapp input或textarea键盘弹起页面上移
单独设置adjust-position="false"不生效,将整个view设置绝对定位,再获取键盘弹起/收起事件,参考文章: 解决uni-app微信小程序input输入框在底部时 ...
最新文章
- linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备
- linux查看usb设备文件,linux – 确定USB设备文件路径
- NIO 之 Channel
- 信息学奥赛一本通(1174:大整数乘法)
- 好久没有写blog了。。。
- 计算机课后感400字,观后感400字
- 计算机26字母代码表,电脑打字学习:26个汉语拼音字母攻略
- 2020年ubuntu安装QQ和微信和迅雷的正确姿势
- 正则表达式(二)验证邮箱、电话号码
- python之html网页转PDF
- win7与linux切换,Windows 7停更后不想用Win10?教你直接换上Linux再战
- Swift 网络请求 Moya+RxSwift
- 暴力破解之验证码绕过
- 2016,Java成神初年
- outlook2007突然打不开的解决方案
- ISA防火墙的默认系统策略和防火墙设置
- 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx
- 22春天津大学《建筑施工》在线作业一
- pandas库读取多个excel文件数据并进行筛选合并处理后导入到新表格中
- 华为服务器安装乌班图系统,安装乌班图服务器版本
热门文章
- centos——记录一次开机启动设置
- 用过滤器防sql注入
- js闭包深入理解(Closure)
- 搭建游戏要选什么样的服务器?
- 水了一篇PAKDD2018的文章:Topic-specific Retweet Count Ranking for Weibo
- 爱奇艺视听体验再升级,上线杜比视界独家电影内容
- python列表替换元素_24_Pandas.DataFrame,Series元素值的替换(replace)
- 克罗内克积(Kronecker product)与笛卡尔乘积(Cartesian product)
- 英语中what的用法
- 终端便捷ssh(免密)连接