繁体   English   中英

SingleChildScrollView,子列上的空格问题

[英]SingleChildScrollView , Problem with spaces on the child Column

当我尝试打开手机键盘时,我的** PIXELS 底部溢出,所以我将我的 Column 包裹在SingleChildScrollView但不知何故它被推到顶部并且MainAxisAlignment.spaceEvenly停止工作,所以我使用SizedBox在它们之间留出了一些空间问题是:这是做到这一点的好方法吗? 实现小部件之间的空间,它是否适用于不同的手机尺寸

我的代码: 在此处输入图像描述

第二个问题:当我打开键盘时,如何将所有列推到顶部直到最后一项显示而不滚动,如下图所示

在此处输入图像描述

  1. 要使MainAxisAlignment.spaceEvenly再次工作,您需要将您的内部包装为ConstrainedBox ,如下所示:
SingleChildScrollView(
        child: ConstrainedBox(
          constraints: BoxConstraints(
            maxHeight: MediaQuery.of(context).size.height,
          ),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Text('data'),
              Text('HelloWorld'),
            ],
          ),
        ),
      ),
  1. 要滚动到表单的末尾,请为SingleChildScrollView使用ScrollController并像这样动画到列表的末尾:
   controller.animateTo(
      controller.position.maxScrollExtent,
      duration: const Duration(milliseconds: 500),
      curve: Curves.easeOut,
    );
  1. 可以将SizedBox用于空格,一个小提示:记得在它之前设置const以使您的应用程序性能更高,因为这样 flutter 不会在每次重建小部件时重建 sizedBox 小部件

希望你觉得这对你有帮助 =D

通常您应该使用ListView ,这应该可以解决键盘隐藏表单字段的问题。

关于SizedBox和你的小部件分布的问题,那是因为通常当你创建一个列时,它使用父级的整个高度,但在SingleChildScrollView的情况下,它没有给你一个大小,因此专栏不知道如何分配您的孩子。

最后,我看到很多开发者使用SizedBox来创建间距,所以我认为使用它并没有什么问题。 您还可以创建一个ListView.separated官方文档),它将添加一个相同的 Widget(您提供的)作为分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM