【问题标题】:Proper way of giving space between title and form?在标题和表格之间留出空间的正确方法?
【发布时间】:2021-01-08 05:46:07
【问题描述】:

我想实现这样的布局。

在我专注于输入之前,它工作正常。

我想知道如何以正确的方式做到这一点......这是我到目前为止已经尝试过的:

  1. SingleChildScrollView 内包装表单(Spacer 小部件导致错误)。
  2. 使用CustomScrollView,(Spacer 小部件导致错误)。
  3. CustomScrollViewSingleChildScrollView 包裹在SizedBox 内受设备高度的限制(导致某些元素在较小的设备上仅部分可见)。
  4. 按照答案from this question(不起作用)。

有什么线索吗?这是我的代码:

class CreateFieldReportPage extends GetView<CreateFieldReportController> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GestureDetector(
        onTap: controller.focusScope.unfocus,
        child: SafeArea(
          child: Padding(
            padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 30),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                PageHeader(
                  helper: 'fieldReport.create.helper'.tr,
                  title: 'fieldReport.create'.tr,
                ),
                Spacer(),
                FieldReportForm(),
                PageNavigator(
                  onPressedPrimaryButton: () {
                    Get.toNamed(Routes.EVENT_CREATE_ADD_USER);
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

【问题讨论】:

  • SingleChildScrollView 应该在顶部,你添加在顶部了吗,如果不行,可以通过删除 SafeArea 来尝试
  • 我做了,还是不能在标题和表格之间加空格
  • 尝试删除spacer,而不是在Column 中添加mainAxisAlignment,并尝试使用spaceBetween 提供间距。

标签: flutter


【解决方案1】:

Spacer() 的行为类似于Flexible 小部件,它将仅占用屏幕上的可用空间,如果其他小部件占用了剩余空间,则它将无法工作。

对您来说,SizedBox(height: 30) 可以工作并添加所需的高度。 SingleChildScrollView() 将提供额外的空间然后执行滚动。

【讨论】:

  • 同意,它以某种方式工作,但在较小的设备中,表单被切断,用户需要向下滚动其余部分。我正在考虑更灵活的方式来做到这一点而不必担心。你觉得怎么样?
  • 使用 MediaQuery 并添加相应的大小。它将处理设备尺寸。
猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2013-03-18
  • 2011-09-05
  • 1970-01-01
相关资源
最近更新 更多