如何解决如何在错误情况下更改颤振中的背景颜色 textformfield?
如何在出现错误情况时在Flutter中更改背景颜色textformfield?
这是我的代码
类 FormData 扩展了 StatefulWidget{
@override
FormDataState createState() => FormDataState();
}
class FormDataState 扩展 State{
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,],
对还是不对?因为在文本字段中没有显示背景色
解决方法
设置 inputteks
时需要使用 setState。只需将您的 validateAndSave 方法更改为:
void validateAndSave() {
final FormState form = formKey.currentState;
setState(() {
inputteks = !form.validate()
});
}
您还需要在 TextFormField 的 onChanged 中使用 setState。
,我得到了一些关于这个案例的参考,你可以看看here,
你可以在here查看我的代码,希望对你有帮助^_^
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。