У меня есть диалоговое окно, которое имеет TextField()
и Button
.После этого я вызываю API, но перед этим мне нужно проверить текст.Поскольку все работает нормально, мне было интересно найти какой-нибудь выход, чтобы показать текст ошибки только в диалоговом окне.После всех исследований и работ, диалоговое окно не воссоздает себя, следовательно, никакое сообщение не отображается, даже если логическое значение становится истинным.
КОД:
class ListViewElements extends StatefulWidget {
@override
_ListViewElementsState createState() => _ListViewElementsState();
}
class _ListViewElementsState extends State<ListViewElements> {
bool isError = false;
bool errorText = false;
final TextEditingController _code = new TextEditingController();
onSubmit(BuildContext context){
if(this._code.text.isEmpty){
setState(
(){
isError = true;
errorText = 'Empty space';
}
);
}
}
void registerDialog(BuildContext context){
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context){
return AlertDialog(
content: Column(
children: <Widget>[
Container(
margin: EdgeInsets.fromLTRB(40.0, 0.0, 40.0, 10.0),
child: TextField(
textAlign: TextAlign.center,
controller: this._code,
maxLength: 4,
textInputAction: TextInputAction.done,
cursorColor: Theme.of(context).primaryColor,
keyboardType: TextInputType.number,
decoration: InputDecoration(
hintText: 'Enter here',
counterText: '',
)
)
),
isError == true ? Text(this.erroText) : Container()
]
),
actions: <Widget>[
FlatButton(
child: new Text("Done", style: TextStyle(color: Theme.of(context).primaryColor, fontSize: 17.0)),
onPressed: () {onSubmit(context);}
)
]
);
}
);
Я думал о показе SnackBar()
, но для диалогового окна Scaffold.of()
не работает, так как сборщик создает новый экземпляр блока, поэтому не может вызвать.Любая помощь будет оценена.Спасибо :)