如何获取用户点击的ListTile组件的标题字符串值?
解决ListView.builder中获取点击ListTile标题的问题
你的代码存在两个问题:一是onTap: Ingridients_Selected_x()会在组件构建时直接执行函数,而非点击时触发;二是没有将ListTile的标题参数传入目标函数。以下是修正后的实现方案:
1. 调整目标函数,接收字符串参数
先修改Ingridients_Selected_x函数,让它能接收并处理标题字符串:
void Ingridients_Selected_x(String selectedTitle) { // 在这里编写你需要的业务逻辑,比如打印标题、更新状态等 print('选中的食材标题:$selectedTitle'); }
2. 修改ListView.builder的onTap回调
在itemBuilder中,用匿名函数包裹目标函数调用,同时传入当前ListTile的标题:
Expanded( child: ListView.builder( itemCount: displayed_add_ingridients_to_meal.length, itemBuilder: (context, index) { // 提前提取当前项的标题,简化代码 final currentTitle = displayed_add_ingridients_to_meal[index].Ingridient_title!; return ListTile( // 点击时触发匿名函数,传入标题参数 onTap: () => Ingridients_Selected_x(currentTitle), title: Text(currentTitle), ); }, ), )
关键说明
- 使用匿名函数
() => Ingridients_Selected_x(currentTitle)作为onTap的回调,确保只有用户点击ListTile时才会执行目标函数 - 提前提取
currentTitle可以避免重复访问列表项的属性,让代码更简洁高效
内容的提问来源于stack exchange,提问作者Semjon
相关产品推荐
相关产品推荐

