首页 > 解决方案 > 是否可以在凸起的按钮和 texfield 之间建立连接?

问题描述

是否可以在凸起的按钮和 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.");
                          }
                        },
                      ),
                    )


              ],)

标签: androidiosflutterdart

解决方案


您可以为您的 TextFormField 提供 onSaved 方法。

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();
  }

推荐阅读