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

如何创建列表并实现点击列表项跳转至新路由?代码求助

帮你搞定Flutter标题的路由跳转!

哈哈,别担心!谁刚开始搞Flutter路由跳转的时候没懵过呢😉 给你一步步拆解怎么给标题加上onTap跳转,还有避坑指南:

第一步:用可点击组件包裹你的标题

Flutter里要给文本加点击事件,最常用的是InkWell(自带Material波纹效果,体验更好)或者GestureDetector。把你的标题组件包进去就行:

// 假设你原来的标题是这样的
InkWell(
  // 这里就是点击事件的回调
  onTap: () {
    // 下一步写跳转逻辑
  },
  child: Text(
    '你的标题文本',
    style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
  ),
)

第二步:两种跳转方式任你选

方式1:直接跳转新页面(适合简单场景)

如果你的新页面是一个单独的Widget(比如叫NewRoutePage),直接用Navigator.push就行:

onTap: () {
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => NewRoutePage()),
  );
}

⚠️ 注意:

  • 别忘了导入新页面的文件:import 'new_route_page.dart';
  • context必须能正常获取到——如果你的标题在一个独立的小Widget里,可能需要通过构造函数传context,或者用Builder包裹一下(下面会说)。

方式2:命名路由(适合多页面项目)

如果项目页面多,用命名路由更清晰,先在MaterialApp里配置路由表:

MaterialApp(
  initialRoute: '/', // 初始页面路由
  routes: {
    '/': (context) => HomePage(), // 你的首页
    '/newRoute': (context) => NewRoutePage(), // 给新页面起个名字
  },
)

然后在onTap里调用:

onTap: () {
  Navigator.pushNamed(context, '/newRoute');
}

常见坑点帮你踩过了

  1. 找不到context?
    如果你的标题Widget不在MaterialApp的直接子树里,或者是一个无状态Widget里的嵌套组件,可能拿不到context,这时候用Builder包裹一下就行:
Builder(
  builder: (context) {
    return InkWell(
      onTap: () {
        Navigator.pushNamed(context, '/newRoute');
      },
      child: Text('你的标题'),
    );
  },
)
  1. 语法错误?
    比如漏了分号、括号不匹配,或者忘记导入新页面——这种情况把你的完整代码贴出来,咱们一起找bug!毕竟谁没写错过个逗号呢😂

要是还有问题,尽管把代码甩出来,咱们一起搞定它!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:37:57