TextFormField Validator在Flutter中不起作用

时间:2020-09-17 21:45:12

标签: flutter text textformfield

我创建了一个页面,他们可以在其中向用户发送验证码。

但是即使我创建了if case,验证器也无法工作。 当我单击按钮(即使它是空的)时,它会转到另一页。 我该如何解决?

这是我的完整代码;

我在最后的评论之后将其添加到了表单小部件中,但是没有用

   return Scaffold(
        body: SafeArea(
          child: Form(
            key: _formKey,
            child: Column(
              children: [
                Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      IconButton(
                        icon: Icon(Icons.arrow_back),
                        onPressed: () {
                          Navigator.pop(context);
                        },
                      ),
                      FlatButton(
                        onPressed:(){
                          Navigator.pop(context);
                        },
                        child: Text(
                          allTranslations.text('login'),
                          style: TextStyle(
                            fontSize: 13,
                            fontWeight: FontWeight.w600,
                            color: HexColor('#4A8EB0'),
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
                Container(
                  padding: EdgeInsets.only(bottom: 10),
                  width: double.infinity,
                  child: Text(
                    allTranslations.text('signUp'),
                    style: textTheme.headline5,
                    textAlign: TextAlign.center,
                    maxLines: 3,
                  ),
                ),
          Padding(
            padding: EdgeInsets.all(15),
            child: TextFormField(
              controller: _controller,
              keyboardType: TextInputType.text,
              decoration: CommonInputStyle.textFieldStyle(
                hintTextStr: 'E-mail',
                labelTextStr: 'E-mail',
              ),
              validator: (value) =>
              value.isEmpty ? 'Password cannot be blank' : null,
            ),
          ),
          Padding(
            padding: EdgeInsets.all(16.0),
            child: Container(
              height: 50.0,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(16),
                color: HexColor('#4A8EB0'),
              ),
              child: InkWell(
                onTap: () async {
                  setState(() {
                    Navigator.pushNamed(context,AnotherPage.routeName);
                  });
                },
                child: Center(
                  child: Text(
                    'Send Code',
                  ),
                ),
              ),
              ],
            ),
          ),
        ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

正如Limbou所说,您需要在用户点击按钮时进行验证。如果成功,它将返回true。

onTap: () async {
   if(_formKey.currentState.validate()) {
       setState(() {
          Navigator.pushNamed(context, AnotherPage.routeName);
       });
   }
}