Boy*_*Boy 5 flutter flutter-layout
编辑:
我得到了一个报告,该报告与键盘出现时的Flutter小部件调整大小相同。如何预防呢?。尽管这是相关的,但这是一个不同的问题。我希望键盘覆盖UI,直到到达具有焦点的TextField。这是Android上的默认行为
原版的:
我是一名Android开发人员,刚开始使用Flutter。我想创建一个登录屏幕。我想要上方的图片TextField。所以我想,我使用Stack来将图片放在背景中,并TextField在下面。
问题在于,一旦键盘出现,它就会将所有内容向上推。在Android上,通常只有在必要时才向上推键盘,直到到达为止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()],
)])
);
}
Run Code Online (Sandbox Code Playgroud)
Hah*_*ann 11
我在设置autoFocus: truea时遇到了这个问题,CupertinoTextField()并通过设置resizeToAvoidBottomPadding: false了它Scaffold()。
我想这就是你想要的。最大的问题是你选择使用堆栈。仅当您想将东西堆叠在一起时才使用堆栈。在这种情况下,你不希望这样。我的做法是将其放置在一个列中,并用扩展组件填充开放空间(此小部件扩展至可用空间并将所有内容向下推)。我并不是说这是最好的方法(只有 2 周的 flutter 经验)。但这是一个办法。我希望它有帮助!
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()
],
),
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5657 次 |
| 最近记录: |