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 底部跟随键盘并且页面跟随键盘相关推荐

  1. Flutter底部导航栏BottomNavigationBar页面状态保持解决方案

    网易云[玩转大前端]配套课程 EDU配套 教程 Flutter开发的点滴积累系列文章 一行代代码置灰应用?对就是这么干 在实际应用开发中,一般应用的首页面会有这种结构,在Flutter应用开发中,有多 ...

  2. Flutter 解决App登录页面软键盘遮挡住登录按钮或顶起底部控件的问题

    文章目录 1 软键盘问题点对比效果图 2 解决软键盘将底部布局顶上去的问题 2.1 方式一:修改resizeToAvoidBottomInset属性 2.2 方式二:使用可滑动布局 3 弹出软键盘时滚 ...

  3. 解决uni-app微信小程序input输入框在底部时,键盘弹起页面整体上移问题

    问题描述: 最近的做了个客服聊天的功能,遇到一个问题如下: 在手机上点击聊天页底部的input框后,键盘弹起同时页面会整体上移,标题栏被顶上去了.如下图: 问题分析: input 获取焦点时会自动调起 ...

  4. Vue出现弹出层时,禁止底部页面跟随滑动

    背景:最近在写一个vue项目,当出现弹出层时,发现底部页面跟随滚动,但是产品不想要这种效果,于是找各种资料,发现很多说法,但是试了试,发现有的根本就不行,比如说有人提出用vue中提供的@touchmo ...

  5. h5键盘把页面顶走了_微信h5开发的坑

    记一次微信h5开发的坑... 正常的效果如下: 本身用的cube-ui开发,上半部分是自己写的,下边用的是better-scroll,为了滑动更流畅.这个页面前边有一个登录页面,登录之后就会跳到这个首 ...

  6. 解决h5底部输入框在ios被软键盘顶飞 软键盘消失还下不来

    好吧,其实不是顶飞,准确点说应该是h5页面fiexed定位在底部的输入框在ios软键盘弹起的时候软键盘跟输入框有时会有一段悬空的距离,无法紧贴.在安卓机子上则没有这样的情况. 解决方法是通过h5的sc ...

  7. Flutter仿微信,支付宝密码输入框+自定义键盘

    大家好,我又来了. 刚用Flutter做完一个金融项目,当中使用到了类似于微信,和支付宝的那种密码输入框,然后为了安全一点也自己实现了自定义的键盘,今天跟大家分享一波 效果如下图所示: Flutter ...

  8. 微信浏览器H5页面软键盘关闭导致页面空缺的问题

    微信6.7.4 H5页面里的select,input软键盘弹起的时候页面会上移,软键盘关闭页面不会下移.导致页面空缺了一部分. 微信6.7.3及其它版本不会有这个问题!页面会随着软键盘关闭而下移恢复正 ...

  9. uniapp input或textarea键盘弹起页面上移

    单独设置adjust-position="false"不生效,将整个view设置绝对定位,再获取键盘弹起/收起事件,参考文章: 解决uni-app微信小程序input输入框在底部时 ...

最新文章

  1. linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备
  2. linux查看usb设备文件,linux – 确定USB设备文件路径
  3. NIO 之 Channel
  4. 信息学奥赛一本通(1174:大整数乘法)
  5. 好久没有写blog了。。。
  6. 计算机课后感400字,观后感400字
  7. 计算机26字母代码表,电脑打字学习:26个汉语拼音字母攻略
  8. 2020年ubuntu安装QQ和微信和迅雷的正确姿势
  9. 正则表达式(二)验证邮箱、电话号码
  10. python之html网页转PDF
  11. win7与linux切换,Windows 7停更后不想用Win10?教你直接换上Linux再战
  12. Swift 网络请求 Moya+RxSwift
  13. 暴力破解之验证码绕过
  14. 2016,Java成神初年
  15. outlook2007突然打不开的解决方案
  16. ISA防火墙的默认系统策略和防火墙设置
  17. 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx
  18. 22春天津大学《建筑施工》在线作业一
  19. pandas库读取多个excel文件数据并进行筛选合并处理后导入到新表格中
  20. 华为服务器安装乌班图系统,安装乌班图服务器版本

热门文章

  1. centos——记录一次开机启动设置
  2. 用过滤器防sql注入
  3. js闭包深入理解(Closure)
  4. 搭建游戏要选什么样的服务器?
  5. 水了一篇PAKDD2018的文章:Topic-specific Retweet Count Ranking for Weibo
  6. 爱奇艺视听体验再升级,上线杜比视界独家电影内容
  7. python列表替换元素_24_Pandas.DataFrame,Series元素值的替换(replace)
  8. 克罗内克积(Kronecker product)与笛卡尔乘积(Cartesian product)
  9. 英语中what的用法
  10. 终端便捷ssh(免密)连接