You need to enable JavaScript to run this app. Flutter中ListView.builder内如何实现点击不同列表项跳转对应页面
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中ListView.builder内如何实现点击不同列表项跳转对应页面

列表项对应路由跳转实现方法

你只要拿到当前点击列表项的索引,直接匹配你预先定义的route数组即可,具体实现如下:

  • 如果你用ListView.builder动态生成列表项(推荐方案,适配任意长度的列表):
// 先优化你的数组类型标注,避免运行时错误
final List<String> title = [
  'Animals',
  'Birds',
  'Body Parts',
  'Country',
  'Fish',
  'Plants',
  'Vehicle',
  'Works',
];
final List<Widget> route = [
  Animals(),
  Birds(),
  BodyParts(),
  Country(),
  Fish(),
  Plant(),
  Vehicle(),
  Works(),
];

// 列表构建代码
ListView.builder(
  itemCount: title.length,
  itemBuilder: (BuildContext context, int index) {
    return InkWell(
      onTap: () {
        // 直接用当前项的索引取对应的页面实例
        Navigator.push(
          context,
          MaterialPageRoute(builder: (context) => route[index]),
        );
      },
      // 这里可以自定义你的列表项UI
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Text(title[index]),
      ),
    );
  },
)
  • 如果你是手动写死每个InkWell的场景,直接给每个InkWell的onTap传入对应索引即可:
// 第一个列表项对应Animals页面,索引为0
InkWell(
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => route[0]),
    );
  },
  child: const Text('Animals'),
),
// 第二个列表项对应Birds页面,索引为1
InkWell(
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => route[1]),
    );
  },
  child: const Text('Birds'),
),
// 后续项以此类推

注意事项:请确保title数组和route数组的长度、顺序完全一一对应,否则会出现跳转页面和点击标题不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 06:15:03