flutter 弹出框键盘遮挡 获取键盘高度
键盘高度:MediaQuery.of(context).viewInsets.bottom (此高度只能在键盘唤醒时在build中获取,弹出键盘会执行build)
看代码:
iimport ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: ‘Flutter Demo Home Page’),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
String hint = ‘请输入…’;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.red,
centerTitle: true,
title: Text(‘appBar’),
),
body: Container(
color: Colors.green,
child: InkWell(
child: Center(
child: Text(
‘点击弹出框’,
style: TextStyle(color: Colors.white),
),
),
onTap: () {
showDialog(
barrierDismissible: true,
context: context,
builder: (BuildContext context) {
return Scaffold(
backgroundColor: Colors.transparent,
body: Container(
width: MediaQuery.of(context).size.width,
child: Stack(
children: [
Positioned(
child: CupertinoAlertDialog(
title: const Text(‘输入框’),
content:Container(
color: Colors.white,
child: CupertinoTextField(
placeholder: hint,
style: TextStyle(fontSize: 15, color: Colors.black),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(2)),
),
maxLines: 5,
maxLength: 30,
maxLengthEnforced: true,
),
),
),
bottom: MediaQuery.of(context).viewInsets.bottom > 0 ? 0 : 300,//300换成键盘高度值效果更好
left: 0,
right: 0,
)
],
),
),
);
});
},
),
));
}
}
/*
class _MyHomePageState extends State {
@override
void initState() {
super.initState();
}
String str = ‘’;
@override
Widget build(BuildContext context) {
MediaQuery.of(context);
print(‘build~~~~~’);
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: Text(‘appA的flutter’),
),
body: Center(
child: TextField(),
)
);
}
}*/
至于 ios风格组件国际化问题 请看之前的文章 告辞
flutter 弹出框键盘遮挡 获取键盘高度相关推荐
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择. 使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScrip ...
- 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理. 而现在webdriver对这些弹出框做了专门的处理,使用selen ...
- qt中调整弹出框的位置
提要 在程序中点击按钮,有时在边缘弹出的弹出框,不能全部展示在用户的面前,弹出框显示的位置会超过程序的边界,从而看不到完整的弹出框,这时可以菜取设置弹出框可以按下鼠标拖动来使其不被遮住,或者在弹出框谈 ...
- swal如何加入html语言,前端基础(九):SweetAlert(弹出框)
简介 SweetAlert是一款很好用的弹出框框架 下载 导入 博主用的是bootstrap-sweetalert,所以要依赖bootstrap,导入前先导入原生jQuery以及bootstrap 基 ...
- android实现底部弹出框与软键盘冲突(全面屏虚拟键适配)
普通的底部弹出框大家都可以很熟练的使用了,无非是一个diaolog的事情,但是当dialog中含有输入框之后,软键盘与dialog的冲突可以说是十分坑了...更别说加上底部虚拟键了,这么一个小功能磨得 ...
- Flutter 弹出键盘报错解决
Flutter 弹出键盘报错解决 错误原因 报错页面: 错误原因: 当一个页面的内容不能全部展示出来时,就会出现这种错误.其实这里如果没有键盘弹出,内容长度超过屏幕可显示范围,同样会报错. 解决方法 ...
- flutter APP中禁止软键盘弹出,监听硬键盘输入方法
flutter App中禁止软键盘弹出,监听硬键盘输入的方法 之前的工作中遇到一个需求,想点击输入框后不弹出软键盘,使用设备硬键盘输入,解决方法:设置输入框只读并且显示光标,然后配置键盘监听就可以了. ...
- 使用popwindow制作弹出框与获得焦点弹出软键盘
如果是声明一各类 public class VideoFilterDialog extends PopupWindow 那么在构造方法中添加: conentView = inflater.inflat ...
- firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作
firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 参考文章: (1)firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 (2)https://www.cnblogs.com/ ...
最新文章
- python 线程池
- 七月在线python数据分析_七月在线Python基础+数据分析班+爬虫项目
- 怪不得超市不让带宠物...
- Office 2003 主 Interop 程序集的安装和使用
- 关于springMVC的日志管理
- 机房重构-panel控件
- AgentWeb嵌套h5 上传图片文件
- 文件输入流和文件输出流
- python计算ln与log,python计算以e为底的对数
- git强制拉取最新代码
- CSS3中的边框图片
- 同步/异步 异步回调 协成 线程队列
- 四大行、城商行等银行都在使用什么数据库?
- 吐血整理:手拿几个大厂offer的秘密武器!(免费领取)
- 使用ElementUi的tabs切换组件时下拉选择器出现破板情况
- eating的中文意思_eating是什么意思_eating的翻译_音标_读音_用法_例句_爱词霸在线词典...
- 下载Linux ISO镜像的方法 (带你快速了解)
- 无懈可击的web设计笔记
- 2021 年全国职业院校技能大赛 网络搭建与应用赛项
- VisualFreeBasic+Miniblink做浏览器实现js内容替换