我正在做一个基本的应用程序,但是不能正常工作。我有一个TextField,但我不希望它为空。我有一个textController,我使用errorText,但无法正常工作。 Mi代码是:
void changeDesc() { showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('New description'),
content: TextField(
controller: _textController,
decoration: InputDecoration(
hintText: "description",
errorText: descriptionIncorrect
? 'Description cannot be empty'
: null,
),
),
actions: <Widget>[
FlatButton(
child: new Text('Ok'),
onPressed: () {
setState(() {_textController.text.length == 0
? descriptionIncorrect= true
: descriptionIncorrect= false;});
if (_textController.text.length != 0) {
alert.description = _textController.text;
Navigator.of(context).pop();
}
},
),
FlatButton(
child: new Text('Cancel'),
onPressed: () {
setState(() {
_textController.text.length == 0
? descriptionIncorrect= true
: descriptionIncorrect= false;});
if (_textController.text.length == 0) {
_textController.text = alert.description;
Navigator.of(context).pop();
}
},
)
],
);
});}
当我按下“确定”按钮并且textField为空时,错误应该出现,但没有出现。我已经尝试了一些方法,但是我无法按需进行。
谢谢。
答案 0 :(得分:0)
您需要执行两个步骤1-刷新警报对话框,您需要将其包装在StatefulBuilder
小部件中。 2-将自动对焦添加到您的文本字段。
这是完整的代码。
bool descriptionIncorrect = false;
var _textController = TextEditingController();
void changeDesc() {
showDialog(
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Text('New description'),
content: TextField(
autofocus: true,
controller: _textController,
decoration: InputDecoration(
hintText: "description",
errorText: descriptionIncorrect
? 'Description cannot be empty'
: null,
),
),
actions: <Widget>[
FlatButton(
child: new Text('Ok'),
onPressed: () {
setState(() {
_textController.text.length == 0
? descriptionIncorrect = true
: descriptionIncorrect = false;
print(_textController.text.length.toString());
print(descriptionIncorrect.toString());
});
if (_textController.text.length != 0) {
alert.description = _textController.text;
Navigator.of(context).pop();
}
},
),
FlatButton(
child: new Text('Cancel'),
onPressed: () {
setState(() {
_textController.text.length == 0
? descriptionIncorrect = true
: descriptionIncorrect = false;
});
if (_textController.text.length == 0) {
_textController.text = alert.description;
Navigator.of(context).pop();
}
},
)
],
);
},
);
});
}