Flutter密码框显隐状态不生效问题求助
Flutter密码输入框切换显示/隐藏无响应问题修复
问题根源
你的代码里存在变量不匹配的关键错误:
TextFormField的obscureText绑定的是isPassword参数- 点击后缀图标时切换的却是
_isObscure成员变量
这就导致调用setState修改_isObscure后,obscureText的值根本没变化,界面自然不会更新。
修复步骤
统一绑定的状态变量
将obscureText的值改为_isObscure,让UI和状态变量保持一致:obscureText: _isObscure,确认成员变量声明
确保_isObscure是当前State类的成员变量,并且初始值符合需求(默认隐藏密码的话初始化为true):bool _isObscure = true;
修正后的完整代码片段
return Padding( padding: const EdgeInsets.symmetric(vertical: 5), child: TextFormField( obscureText: _isObscure, // 这里改成_isObscure controller: controller, decoration: InputDecoration( hintText: hint, hintStyle: const TextStyle(color: kTextFieldColor), focusedBorder: const UnderlineInputBorder( borderSide: BorderSide(color: kPrimaryColor), ), suffixIcon: isPassword ? IconButton( onPressed: () { setState(() { _isObscure = !_isObscure; }); }, icon: _isObscure ? const Icon( Icons.visibility_off, color: kTextFieldColor, ) : const Icon( Icons.visibility, color: kPrimaryColor, ), ) : null, ), validator: validator, onSaved: onSaved, keyboardType: keyboardType, inputFormatters: inputFormatters, ), );
额外说明
回退旧版本仍未解决,大概率是旧代码也存在同样的变量不匹配问题,或者_isObscure没有在State类中正确声明为成员变量。
内容的提问来源于stack exchange,提问作者user22244550
相关产品推荐
相关产品推荐

