首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >键盘上推内容/调整屏幕大小

键盘上推内容/调整屏幕大小
EN

Stack Overflow用户
提问于 2018-04-15 16:40:45
回答 5查看 24.4K关注 0票数 13

编辑

我接到报告说这是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中,以便用户能够在键盘出现时滚动。

这是我的布局(仅用于测试)

代码语言:javascript
复制
@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()],
      )])
  );
}

EN

回答 5

Stack Overflow用户

发布于 2018-12-28 03:19:22

我在CupertinoTextField()中设置autoFocus: true时遇到了这个问题,并通过在Scaffold()中设置resizeToAvoidBottomInset: false来修复它。

resizeToAvoidBottomPadding 现在已弃用。

使用 resizeToAvoidBottomInset**.**的

票数 36
EN

Stack Overflow用户

发布于 2019-02-18 05:31:54

另外,我建议您使用ListView,而不是Stack。另一方面,您也可以尝试使用SingleChildScrollView (但您可能必须添加额外的代码来实现)。

快乐的编码...

票数 3
EN

Stack Overflow用户

发布于 2018-04-15 17:22:53

我想这就是你想要的。最大的问题是您选择使用Stack。只有当你想要将东西堆叠在一起时,才会使用堆栈。在这种情况下,您不希望出现这种情况。把它放在一个列中,然后用一个扩展的(这个小部件扩展到可用的空间,然后把所有东西都压下来)填充空白处,这就是我的方式。我不认为这是最好的方法(只有2周的颤动体验)。但这是一种方法。我希望它能有所帮助!

代码语言:javascript
复制
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()
                            ],
                        ),
                    ],
                ),
            ),
        );
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49840074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档