Flutter中TextField的onTap调用方法时出现Invalid constant value错误
问题解决:Flutter TextField中InputDecoration的onTap报「Invalid constant value」错误
错误原因
你给InputDecoration添加了const修饰符,但const构造要求所有子属性必须是编译时常量。而_togglePasswordView是组件的实例方法,不属于编译时常量,因此无法在const InputDecoration中使用,触发了「Invalid constant value」错误。
解决方案
直接去掉InputDecoration前面的const关键字,即可正常绑定实例方法作为回调:
TextField( textAlign: TextAlign.center, obscureText: _obscureText, onChanged: (value) { password = value; }, style: const TextStyle(color: Colors.black), // 移除此处的const修饰符 decoration: InputDecoration( hintText: 'Enter your Password.', hintStyle: TextStyle(color: Colors.black26), suffix: InkWell( child: Icon(_obscureText ? Icons.visibility_off : Icons.visibility), onTap: _togglePasswordView, ), contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(32.0)), ), ), ) void _togglePasswordView() { setState(() { _obscureText = !_obscureText; }); }
额外优化(可选)
可以根据_obscureText的状态切换显示的图标,让用户更直观地感知密码是否可见,如上述代码中Icon(_obscureText ? Icons.visibility_off : Icons.visibility)的写法。
内容的提问来源于stack exchange,提问作者user16993231
相关产品推荐
相关产品推荐

