是否可以在凸起的按钮和texfield之间建立连接?

时间:2019-08-27 12:16:28

标签: android ios flutter dart

是否可以在凸起的按钮和texfield之间建立连接? 我想制作一个QuizApp,在其中在文本字段中输入答案,并在按if,else方法检查的按钮(如果在文本字段中输入的内容正确)时单击该按钮。我该怎么办?

Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[

                   TextFormField(
                      decoration: InputDecoration(labelText:"put in the correct answer", 
                          labelStyle: TextStyle(color: Colors.white)
                      ),
                      key: _formKey,
                      autovalidate: true,
                      validator: (String value){
                        if (value.contains("test") ){
                        return "Gebe mehr ein";
                        }else{
                        return null;}
                      }
                    ),
                    Padding(
                      padding: const EdgeInsets.symmetric(vertical: 16.0),
                      child: RaisedButton(
                        onPressed: (){
                          if (_formKey.currentState.validate()){
                            debugPrint("Alles richtig gemacht.");
                          }
                        },
                      ),
                    )


              ],)

1 个答案:

答案 0 :(得分:1)

您可以将onSaved方法赋予TextFormField。

TextFormField(
  obscureText: true,
  decoration: InputDecoration(
    prefixIcon: const Icon(FontAwesomeIcons.lock),
    labelText: AppLocalizations.of(context).translate("password"),
  ),
  onSaved: (String val) {
    _password = val;
  },
  validator: (val) {
    return AppLocalizations.of(context).translate(validatePassword(val));
  },
),

如果您的表单通过验证,则可以保存您的表单。因此,当您保存表单时,所有onSaved()方法都将在表单小部件的后代小部件中调用,这基本上将上述示例中的值保存在变量中。

或者您可以将TextEditingController赋予TextFormField小部件。

TextEditingController _controller = TextEditingController();

通过initState方法向其添加侦听器。

_controller.addListener(() {
  setState(() {
    _amount = _controller.text;
  });
});

并以dispose方法放置控制器。

 @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }