Сброс формы с помощью formKey.currentState.reset () не работает - PullRequest
0 голосов
/ 08 июля 2019

Я создаю форму, которая включает адрес электронной почты, пароль и кнопку отправки.Когда я попытался сбросить форму, используя formKey.currentState.reset, это не сработало.Можете ли вы помочь мне

class App extends StatelessWidget{
Widget build(context){
  return MaterialApp(
    title: 'Log Me In!',
    home: Scaffold(
          body: LoginScreen(),
    )
  );
}

}





class LoginScreen extends StatefulWidget {
  LoginScreenState createState() => LoginScreenState();
}

class LoginScreenState extends State<LoginScreen> {
  final formKey = GlobalKey<FormState>();

  Widget build(BuildContext context) {
    return Container(
        margin: EdgeInsets.all(20.0),
        child: Form(
            child: Column(
          children: <Widget>[
            emailField(),
             passwordField(),
             Container(margin: EdgeInsets.only(top: 25.0),),
              submitButton(),
          ],
        )));
  }



Widget submitButton(){

   return RaisedButton(
     child: Text('Submit'),
     color: Colors.blueGrey,
     onPressed: (){
       formKey.currentState.reset();
     },
   );
 }

Я ожидаю сброса адреса электронной почты и пароля.Нет сообщений об ошибках.

1 Ответ

1 голос
/ 08 июля 2019

Я вижу, в чем ваша проблема, вам нужно было установить свойство key виджета Form с созданной вами переменной. например. key: formKey

Ниже приведен полный код вашего LoginScreenState класса для решения проблемы:

class LoginScreenState extends State<LoginScreen> {
  final formKey = GlobalKey<FormState>();

  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(20.0),
      child: Form(
        key: formKey, // you missed out on this!!!
        child: Column(
          children: <Widget>[
            emailField(),
            passwordField(),
            Container(margin: EdgeInsets.only(top: 25.0),),
            submitButton(),
          ],
        )
      )
    );
  }

  Widget submitButton(){
    return RaisedButton(
      child: Text('Submit'),
      color: Colors.blueGrey,
      onPressed: (){
        formKey.currentState.reset();
      },
    );
  }
}
...