Flutter如何实现类似HTML隐藏input的功能并获取TextFormField值
问题解答
这个需求完全可以实现,具体逻辑和优化方案如下:
- 你当前的写法本身是可用的:
Visibility(visible: false)仅会控制组件不在页面渲染展示,不会销毁组件的状态,你绑定的glControllerMask控制器仍然完全生效,直接调用glControllerMask.text即可获取对应输入值,赋值也可以直接修改该属性实现。如果当前你拿不到值,排查方向为确认控制器glControllerMask的赋值、绑定逻辑是否正常,和Visibility的隐藏设置没有关联。 - 更优的实现方案:
- 如果不需要依赖这个TextFormField做UI交互、Form表单校验等能力,完全不需要写一个隐藏的输入组件,Flutter不需要像HTML那样依赖DOM节点存储隐藏值,你直接声明一个String类型的变量存储对应数值即可,性能开销比渲染隐藏控件低很多。
- 如果确实需要和Form组件联动使用TextFormField,也可以用
Offstage组件代替Visibility包裹,或者直接将TextFormField的高度设置为0,都能实现相同的隐藏效果,取值逻辑不变。
内容的提问来源于stack exchange,提问作者HiDayurie Dave
相关产品推荐
相关产品推荐

