You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter横屏模式下出现Bottom overloaded by 27 pixels错误求助

问题分析与解决方案

横屏出现「Bottom overloaded by 27 pixels」是因为布局总高度超出了当前屏幕的可用垂直空间,结合你提供的代码,给出几个可行的解决方向:

  • 用SingleChildScrollView包裹Column
    这是最直接的解决方式,当内容超出屏幕高度时允许滚动,避免溢出。修改后的代码如下:

    body: SafeArea(
      child: SingleChildScrollView(
        child: Column(
          children: [
            Container(
              padding: const EdgeInsets.symmetric(horizontal: kPadding8),
              height: 43,
              width: double.infinity,
              margin: const EdgeInsets.symmetric(horizontal: kPadding20),
              child: Row(
                children: [
                  Expanded(
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Text(
                          'Harga',
                          style: kRalewayRegular.copyWith(
                            color: kGrey85,
                            fontSize: SizeConfig.blockSizeHorizontal! * 2.5,
                          ),
                        ),
                        SizedBox(
                          height: SizeConfig.blockSizeVertical! * 0.5,
                        ),
                        Text(
                          'Rp. 25.000.000 / Tahun',
                          style: kRalewayMedium.copyWith(
                            color: kBlack,
                            fontSize: SizeConfig.blockSizeHorizontal! * 4,
                          ),
                        )
                      ],
                    ),
                  ),
                  GestureDetector(
                    onTap: () {
                      debugPrint('Telah Disewa');
                    },
                    child: Container(
                      height: 43,
                      decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(kBorderRadius10),
                        gradient: kLinearGradientBlue,
                      ),
                      padding: const EdgeInsets.symmetric(horizontal: kPadding24),
                      child: Center(
                        child: Text(
                          'Sewa',
                          style: kRalewaySemibold.copyWith(
                            color: kWhite,
                            fontSize: SizeConfig.blockSizeHorizontal! * 4,
                          ),
                        ),
                      ),
                    ),
                  )
                ],
              ),
            ),
          ],
        ),
      ),
    )
    
  • 调整Column的mainAxisSize属性
    默认情况下Column的mainAxisSize是MainAxisSize.max,会尝试撑满整个垂直空间。如果你的内容不需要占满全屏,可以设置为MainAxisSize.min,让Column只占用内容所需的高度:

    body: SafeArea(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          // 原有Container内容保持不变
        ],
      ),
    )
    
  • 检查SizeConfig的计算逻辑
    你用SizeConfig.blockSizeVertical和blockSizeHorizontal来设置字体和间距,横屏时屏幕宽高比变化,如果SizeConfig的计算没有适配横屏场景,可能导致元素高度计算错误,间接增加布局总高度。可以验证横屏时这些参数的输出是否符合预期。

内容的提问来源于stack exchange,提问作者MuhamDaily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:43:13