android - 摆脱 android 虚拟键盘上的填充(颤振)
问题描述
当我在我的虚拟 android 设备上拉起虚拟键盘时,它看起来如下:
如您所见,键盘底部有大量黑色填充。我不知道如何摆脱这个。
我已经尝试过,它会在键盘未resizeToAvoidBottomPadding: false,
显示时删除屏幕底部的填充,但在显示时无济于事。非常感谢任何输入!
代码:
Scaffold(
backgroundColor:const Color(0xffFFF6E0),
resizeToAvoidBottomPadding: false,
child:GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
},
child:Container(
child: Stack(
overflow: Overflow.clip,
children: <Widget>[
AnimatedPositioned(
duration: Duration(milliseconds: 400),
top:5,
bottom: (mode == 1)?MediaQuery.of(context).size.height*.18:MediaQuery.of(context).size.height,
left:5,
right:5,
child:Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Theme.of(context).colorScheme.primary,
),
child: Column(
children: <Widget>[
SizedBox(
height: 20,
),
Text(
"Welcome Back!",
style: Theme.of(context).textTheme.display3.copyWith(fontSize: 44),
),
Container(
margin: EdgeInsets.only(left:20,right:20,top:20),
//padding: EdgeInsets.only(right:20,left:20,),
padding: EdgeInsets.only(right:20,left:20,),
decoration: new BoxDecoration(
borderRadius: BorderRadius.circular(20),
color:Theme.of(context).primaryColor,
),
//child:
child:new TextField(
decoration: InputDecoration(
hintText: 'email',
border: InputBorder.none
),
)
),
Container(
margin: EdgeInsets.only(left:20,right:20,top:20),
//padding: EdgeInsets.only(right:20,left:20,),
padding: EdgeInsets.only(right:20,left:20,),
decoration: new BoxDecoration(
borderRadius: BorderRadius.circular(20),
color:Theme.of(context).primaryColor,
),
//child:
child:new TextField(
decoration: InputDecoration(
hintText: 'email',
border: InputBorder.none
),
)
),
Container(
margin: EdgeInsets.only(left:20,right:20,top:20),
//padding: EdgeInsets.only(right:20,left:20,),
padding: EdgeInsets.only(right:20,left:20,),
decoration: new BoxDecoration(
borderRadius: BorderRadius.circular(20),
color:Theme.of(context).primaryColor,
),
//child:
child:new TextField(
decoration: InputDecoration(
hintText: 'email',
border: InputBorder.none
),
)
)
],
),
)
),
Positioned(
bottom:0,
left:0,
right:0,
child:
Align(
alignment: Alignment.bottomCenter,
child: RaisedButton(
color: const Color(0xff251605),
elevation: 4,
textColor: const Color(0xffFFF6E0),
//padding: EdgeInsets.fromLTRB(15, 15, 15, 15),
child:
SizedBox(
width: 200,
height: 35,
child:
Text("Back",style:TextStyle(color:const Color(0xffFFF6E0),fontSize: 24,fontWeight:FontWeight.normal),textAlign: TextAlign.center,),
),
onPressed: (){
},
padding: const EdgeInsets.all(15.0),
shape: RoundedRectangleBorder(borderRadius: new BorderRadius.circular(40.0))
),
)
)
]
)
)
)
解决方案
在返回之前的构建方法中添加这个
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
推荐阅读
- c - VS 在第二次重新分配后发疯
- azure - Docker 基于 TeamCity 云代理构建
- python - 这个错误是什么意思,我在哪里做错了?'targets/Y:0' TensorFlow:形状错误。
- java - java - 如何在java中的倒计时/计时器之后创建一个对话框窗口?
- kubernetes - 无法从机器内部卷曲入口:404
- javascript - 根据结果使用javascript更改p的背景颜色
- javascript - Cookie 通知脚本
- arrays - 如何使用 Kotlin 检查二维数组中是否存在值?
- c# - 使用 .net core 和 mongodb,有没有办法只更新我在 json 中传递的字段?
- django - 使用 django 管理站点的多项选择字段