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

Flutter水平滚动失效求助:仅能垂直滚动

解决Flutter水平滚动不生效的问题

你的问题核心在于用垂直布局的Column来放置需要水平滚动的子项,Column会强制子项垂直堆叠,自然无法触发水平滚动逻辑。调整布局结构即可解决:

  1. 把内层的Column替换为Row,让子项水平排列
  2. 用SingleScrollView包裹这个Row,并显式设置scrollDirection: Axis.horizontal
  3. 确保SingleScrollView能获取到合理的布局约束(比如外层的Expanded已经提供了垂直方向的空间)

修改后的代码示例:

Expanded(
  child: SingleScrollView(
    scrollDirection: Axis.horizontal, // 开启水平滚动
    child: Row( // 替换Column为Row,实现子项水平排列
      children: etaDetails
          .asMap()
          .map((i, value) {
            return MapEntry(
              i,
              StreamBuilder<DatabaseEvent>(
                stream: fdb.onValue,
                builder: (context, AsyncSnapshot event) {
                  return InkWell(
                    onTap: () {},
                    child: Container(
                      width: 100,
                      height: 80,
                      padding: EdgeInsets.all(media.width * 0.03),
                      decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(12),
                      ),
                      child: const Text("data"),
                    ),
                  );
                },
              ),
            );
          })
          .values
          .toList(),
    ),
  ),
)

额外提示:

  • 如果子项高度不固定,可给Row外层套一个SizedBox指定高度,避免布局溢出
  • 若需要子项自适应高度,也可以用IntrinsicHeight配合Row处理,但该组件会增加布局计算开销,建议优先直接指定高度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:35:34