Flutter应用中如何为ListView.builder生成的每个ListTile设置不同名称
Flutter 实现自定义命名ListTile列表的方案
你现有代码的绑定逻辑已经符合要求,仅需调整数组内容即可实现每个列表项展示独立自定义名称,具体调整方式如下:
1. 替换为自定义命名数组
如果需要完全自定义每个列表项的名称,直接定义字符串数组填入对应名称即可:
// 替换原有自动生成的items数组,按需填入100个独立名称即可 final List<String> items = [ "第一章 基础入门", "第二章 环境配置", "第三章 核心语法", // 依次补充剩余97个自定义名称 ];
如果名称有统一规则,可直接调整生成逻辑批量生成100个符合要求的名称:
// 示例:生成100个「第X章 章节名称X」格式的名称 final items = List<String>.generate(100, (i) => "第${i+1}章 章节名称${i+1}");
2. 绑定逻辑说明
ListView.builder的itemBuilder回调会在渲染每一个列表项时,自动传入当前项的下标index,直接通过items[index]就能取出数组对应位置的名称,赋值给ListTile的title属性即可,你提供的示例代码本身的绑定逻辑是完全正确的。
3. 完整可运行参考代码
import 'package:flutter/material.dart'; class ChapterListPage extends StatelessWidget { // 自定义命名数组,长度为100满足需求 final items = List<String>.generate(100, (i) => "第${i+1}章 章节${i+1}"); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('章节索引'), ), body: ListView.builder( padding: const EdgeInsets.all(8), itemCount: items.length, itemBuilder: (BuildContext context, int index) { return ListTile( // 绑定当前下标对应的数组内容 title: Text(items[index]), // 可按需添加点击事件等扩展功能 onTap: () { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('你选中了${items[index]}')) ); }, ); }, ), ); } }
内容的提问来源于stack exchange,提问作者Mike Osborn
相关产品推荐
相关产品推荐

