编辑:
我接到报告说这是When the keyboard appears, the Flutter widgets resize. How to prevent this?的复制品。虽然这是相关的,但它是一个不同的问题。我希望键盘与UI重叠,直到它到达具有焦点的TextField。这是Android上的默认行为
原创:
我是一名Android开发人员,刚刚开始使用Flutter。我想创建一个登录屏幕。我想要一张图片放在TextField
的上面,所以我想,我应该用Stack
把图片放在背景上,再用一些TextField
放在下面。
问题是,一旦键盘出现,它就会把所有内容都推上来。在安卓系统上,键盘通常只在必要时才会向上推,而且只会一直推到EditText
上。
我试着将resizeToAvoidBottomPadding
设置为false,但是(当然)什么也没动,TextField
被键盘遮住了。
我记得在过去使用iOS时,这是默认行为,也许我应该重新考虑我的布局?
目前,我将其封装在一个ListView
中,以便用户能够在键盘出现时滚动。
这是我的布局(仅用于测试)
@override
Widget build(BuildContext context) {
this.context = context;
return new Scaffold(
key: _scaffoldKey,
body: new Stack(
children: <Widget>[loginImage(), new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[new TextField(), new TextField(),
new TextField(), new TextField(),
new TextField(), new TextField()],
)])
);
}
:
发布于 2018-12-28 03:19:22
我在CupertinoTextField()
中设置autoFocus: true
时遇到了这个问题,并通过在Scaffold()
中设置resizeToAvoidBottomInset: false
来修复它。
resizeToAvoidBottomPadding
现在已弃用。
使用 resizeToAvoidBottomInset
**.**的
发布于 2019-02-18 05:31:54
另外,我建议您使用ListView
,而不是Stack
。另一方面,您也可以尝试使用SingleChildScrollView
(但您可能必须添加额外的代码来实现)。
快乐的编码...
发布于 2018-04-15 17:22:53
我想这就是你想要的。最大的问题是您选择使用Stack。只有当你想要将东西堆叠在一起时,才会使用堆栈。在这种情况下,您不希望出现这种情况。把它放在一个列中,然后用一个扩展的(这个小部件扩展到可用的空间,然后把所有东西都压下来)填充空白处,这就是我的方式。我不认为这是最好的方法(只有2周的颤动体验)。但这是一种方法。我希望它能有所帮助!
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new Scaffold(
body: new Column(
children: <Widget>[
new Center(
child: new Container(
height: 150.0,
width: 75.0,
color: Colors.red,
),
),
new Expanded(
child: new Container(),
),
new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new TextField(),
new TextField(),
new TextField(),
new TextField(),
new TextField(),
new TextField()
],
),
],
),
),
);
}
}
https://stackoverflow.com/questions/49840074
复制相似问题