Flutter中如何让无效状态的TextFormField保持原有样式?
让TextFormField在无效状态下保留原有样式的方法
Flutter的TextFormField在验证不通过(无效状态)时,会自动切换到默认的错误样式(比如红色边框)。要让它保持你自定义的原有样式,只需在InputDecoration里把错误状态对应的边框属性设置成和正常状态一致就行,具体修改如下:
SizedBox( height: globals.StandardWidgetHeight, child: TextFormField( decoration: InputDecoration( border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(5)) ), // 核心:把错误状态的边框和正常边框设成一样 errorBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(5)), borderSide: BorderSide(color: Colors.grey) // 这里颜色和你正常边框保持一致,按需调整 ), focusedErrorBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(5)), borderSide: BorderSide(color: Colors.grey) // 聚焦时的错误边框也同步 ), filled: true, fillColor: Colors.white, labelText: 'Name *', // 可选:如果不想错误提示占高度,加这行让提示悬浮,避免布局跳动 // errorStyle: TextStyle(height: 0), ), controller: _NameController, validator: (value) { if (value == null || value.isEmpty) { return 'Please enter Name'; } return null; }, ), ),
关键点解释:
errorBorder:处理字段无效且未聚焦时的边框样式,完全复刻你设置的border即可。focusedErrorBorder:处理字段无效且被聚焦时的边框样式,同样和正常聚焦状态的边框匹配。- 要是不想错误提示文本改变字段高度,添加
errorStyle: TextStyle(height: 0)就能让提示悬浮在字段上方,不影响原有布局。
内容的提问来源于stack exchange,提问作者Tony Lam
相关产品推荐
相关产品推荐

