android - 出现错误时如何在颤动中更改背景颜色文本框?
问题描述
出现错误时如何在颤动中更改背景颜色文本框?
这是我的代码
类 FormData 扩展 StatefulWidget{
@覆盖
FormDataState createState() => FormDataState();
}
类 FormDataState 扩展状态{
final formKey = GlobalKey<FormState>();
TextEditingController _accidentCtrl = TextEditingController();
TextEditingController _passCtrl = TextEditingController();
bool kondisiObscure = true;
bool inputteks = false;
void validateAndSave() {
final FormState form = formKey.currentState;
if (form.validate()) {
inputteks = false;
} else {
inputteks = true;
}
}
Padding(
padding: const EdgeInsets.only(top: 25, right: 25, left: 25),
child: Container(
width: 315,
decoration: BoxDecoration(
color: Color(0xffF2F3F5),
borderRadius: BorderRadius.circular(8),
),
child: TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Harap diisi';
}
else{
inputteks = false;
}
},
textAlign: TextAlign.start,
decoration: InputDecoration(
fillColor: Color(0xfffaebeb),
filled: inputteks,
contentPadding: EdgeInsets.all(12),
border: InputBorder.none,
focusedBorder: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(10.0),
borderSide: BorderSide(color: Color(0xff3F8AE0) ),
),
enabledBorder: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(10.0),
borderSide: BorderSide(color: Colors.black12, width: 1),
),
errorBorder: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(10.0),
borderSide: BorderSide(color: Color(0xffE64646) ),
),
disabledBorder: InputBorder.none,),
autofocus: true,
controller: _accidentCtrl,
onChanged: (String value) {
formProvider.namatext(value);
_accidentCtrl.selection = TextSelection.fromPosition(TextPosition(offset: _accidentCtrl.text.length));
},
),
),
),
Container(
width: 200,
height: 40,
child: RaisedButton(
onPressed: validateAndSave,
color: ungu,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(17),
),
child: Text(
'Submit', style: putihstyle.copyWith(
fontSize: 16,),
),
),
),],
),
),
),
对不对?因为在文本字段中没有显示背景色
解决方案
设置时需要使用 setState inputteks
。只需将您的 validateAndSave 方法更改为:
void validateAndSave() {
final FormState form = formKey.currentState;
setState(() {
inputteks = !form.validate()
});
}
您还需要在 TextFormField 的 onChanged 中使用 setState。
推荐阅读
- python-3.x - 如何根据 Apache NiFi 中的属性值执行脚本(比如 python 或 java 等)
- c# - “/”应用程序中的服务器错误。指定的转换无效
- opencv - 如何在 Opencv 中使用 Pytorch 张量对象而不转换为 numpy 数组?
- reactjs - React 按钮单击隐藏和显示组件
- openlayers - 从 OpenLayers 中的 WMS 图层获取多边形内的要素
- python - GET API 中的 flask_restful 类似数组的参数
- expo - 如何使用 Expo 的 Manage Work 流程生成 Apk 文件
- spring-boot - 为什么我的 spring-boot 应用程序在 Intellij 中给出“ClassNotFoundException:javax.servlet.Filter”但在 STS 3 中没有?
- visual-studio-code - 如何更改 VS Code 用于 linting 的 .pylintrc 文件?
- ssh - 如何手动执行 sudo chown 命令