Показать / Скрыть данные внутри диалогового окна в флаттере - PullRequest
0 голосов
/ 20 мая 2019

У меня есть диалоговое окно, которое имеет 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() не работает, так как сборщик создает новый экземпляр блока, поэтому не может вызвать.Любая помощь будет оценена.Спасибо :)

...