我有一个对话框,其中有一个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()
无法正常工作,因为构建器正在创建该盒子的新实例,因此无法调用。任何帮助,将不胜感激。谢谢:)