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

Flutter中如何根据TextField输入动态禁用ListTile组件

实现方案

核心逻辑:在TextField的输入回调中判断输入内容长度,存在有效输入时将控制ListTile状态的变量置为false,输入清空时恢复为true,通过setState触发UI更新即可。

代码修改
  1. 补全_onChangedPosition方法内的状态更新逻辑:
void _onChangedPosition(text) {
  setState(() {
    // 去除首尾空格后判断是否为空,避免全空格输入误触发禁用
    _isEnableTile = text.trim().isEmpty;
  });
}

如果不需要过滤首尾空格,只要输入任意字符(包括空格)就禁用ListTile,可以直接写成_isEnableTile = text.isEmpty;。

  1. (可选优化)给ListTile显式添加enabled属性,组件会自动处理禁用状态下的灰化视觉效果,逻辑更清晰:
ListTile(
  // ...其他现有配置
  enabled: _isEnableTile,
  onTap: _isEnableTile
      ? () => _selectPosition(_positionsList![index].id)
      : null,
);
生效前提

上述逻辑需要在StatefulWidget的State类中编写,setState才能正常触发组件重绘更新状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:18:24