Flutter如何设置InkWell仅在特定条件下可交互?
解决Flutter InkWell仅在特定条件下可点击的问题
你当前的写法会导致不满足条件时仍有按压反馈但无响应,要实现仅当my[index]["status"] == "ok"时可点击,其他情况完全取消交互,可以用以下两种方式:
方法一:直接控制InkWell的onTap属性
将onTap根据条件动态赋值,不满足时设为null,InkWell会自动禁用交互和按压效果:
InkWell( onTap: my[index]["status"] == "ok" ? () => myshowModalBottomSheet(context) : null, child: Container( // 你的容器布局代码 ), )
方法二:用AbsorbPointer拦截交互
如果需要更彻底地阻止子组件的所有触摸事件,可使用AbsorbPointer包裹InkWell:
AbsorbPointer( // 当状态不是"ok"时,吸收所有触摸事件 absorbing: my[index]["status"] != "ok", child: InkWell( onTap: () => myshowModalBottomSheet(context), child: Container( // 你的容器布局代码 ), ), )
两种方式都能避免“可按压但无响应”的问题,第一种更轻量化,第二种适合需要批量拦截交互的场景。
内容的提问来源于stack exchange,提问作者mohammed
相关产品推荐
相关产品推荐

