如何在错误情况下更改颤振中的背景颜色 textformfield?

问题描述

如何在出现错误情况时在Flutter中更改背景颜色textformfield?

我想像这样构建文本字段

enter image description here

这是我的代码

类 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查看我的代码,希望对你有帮助^_^