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

Flutter中Divider后第二个Row的NavigationPush跳转无效问题

问题原因

第二个Row绑定的路由跳转无响应,和Navigator、MaterialApp配置无关,是布局溢出导致的点击事件无法传递:

  • 最外层返回的Container固定高度为200,内部Stack默认撑满该父容器,可响应点击的命中区域最大高度仅为200
  • 分类卡片的Positioned设置top:130,自身高度315:
    • 第一个Row位于分类卡片顶部,起始位置距离顶部135左右,有部分区域落在200高度的命中范围内,所以点击可以正常触发跳转
    • Divider下方的第二个Row,起始位置的y坐标已经超过200,虽然你设置了clipBehavior: Clip.none让溢出的内容正常显示,但这部分区域不在Stack的命中测试范围内,点击事件根本不会传递到第二个Row内的InkWell,所以点击无反应,也不会输出任何报错。
修复方法

二选一即可:

  • 直接修改最外层Container的高度,将固定高度200改为足够容纳所有内容的数值(比如500),保证所有可点击组件都在父容器的布局边界内
  • 如果要保留顶部背景图200高度的效果,不要把分类卡片放在Stack里靠溢出显示,把分类卡片拆到Stack外层,用Column做纵向排布,从根源避免溢出布局
关键修改代码
// 原代码中根容器高度为200,修改为适配内容的高度即可
return Container(
  height: 500,
  width: double.infinity,
  decoration: const BoxDecoration(
    image: DecorationImage(
      image: AssetImage("assets/b1.jpg"),
      fit: BoxFit.cover,
    ),
  ),
  // 其余原有代码无需改动

注意:靠clipBehavior: Clip.none实现父容器外显示内容的写法,必然会带来溢出区域点击失效的问题,非特殊场景不建议这么写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:21:14