dart Flutter :键盘出现时向上滚动屏幕

6ie5vjzr  于 2023-06-03  发布在  Flutter
关注(0)|答案(3)|浏览(310)

我试图建立一个登录屏幕,其中包含电话号码字段顶部沿着一个图像和登录按钮在底部,只要我点击电话号码字段键盘上升,但我的'登录按钮'隐藏在键盘后面,我已经使用了“SingleChildScrollView”,以便当键盘上升的页面变得可滚动,但登录按钮不会出现在键盘的顶部。
下面是代码的片段:

return Scaffold(
  backgroundColor: white.color,
  body: SingleChildScrollView(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
                  Container(
                        child: Text(
                          'Enter your mobile number',
                          style: TextStyle(
                            fontSize: headSize.fontSize,
                            fontWeight: FontWeight.w400,
                            color: black.color,
                            fontFamily: 'ProductSans',
                          ),
                        ),
                      ),
                      Container(
                        height: screenHeight / 15,
                        child: Center(
                          child: SizedBox(
                            height: screenHeight / 6,
                            width: double.infinity,
                            child: RaisedButton(
                              color: indigo.color,
                              shape: borderRadius,
                              child: Text(
                                "Continue",
....
htrmnn0y

htrmnn0y1#

我可以给予你一个提示,因为你的代码有点难以理解,你可以使用MediaQuery.of(context). viewInsets.bottom。现在的问题是它能做什么,以及它将如何帮助我。
1.它的作用:它将提供底部填充,这应该避免(基本上是由系统UI在您的情况下键盘占用空间的填充),因为它是一个继承的小部件,所以它会在您打开键盘时自行构建。
2.如何用途:您可以在列的底部创建一个空容器或大小框,并设置其height= MediaQuery.of(context). viewInsets.bottom,然后将列 Package 在单个子滚动视图中。

toe95027

toe950272#

尝试用screenHeight / 15 and screenHeight / 6替换,例如100,并检查结果。

Container(
          height: screenHeight / 15,
          child: Center(
            child: SizedBox(
              height: screenHeight / 6,
              width: double.infinity,
              child: RaisedButton(
                color: indigo.color,
                shape: borderRadius,
                child: Text(
                  "Continue",

顺便说一下,你正在设置父对象的高度小于子对象的高度。我想知道为什么?:)
例如,如果screenHeight = 100
100/15 = 6.6亲本
100/6 = 16.6个儿童

dba5bblo

dba5bblo3#

我也遇到了同样的问题。将MaterialApp设置为父节点和主节点widget为我解决了这个问题。

相关问题