android - 是否可以在凸起的按钮和 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.");
}
},
),
)
],)
解决方案
您可以为您的 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();
}
推荐阅读
- python - 访问主页时出现 Pythonanywhere 错误
- android - 如何从 Kotlin 中的内部类 [AsyncTask] 访问扩展功能?
- .net - 如何在 API 管理中配置 Azure AAD 并从 .NET 中的 Web/控制台应用程序调用 API 管理端点
- laravel - Laravel 6.9 belongsToMany 关系返回一个集合
- java - 在 Java 中不使用任何凭据即可阅读 Google 电子表格
- arrays - 按单元格中的倒数第二个字母排序数据,然后是第一个 - Google Apps Script / Google Sheets
- git - Git 仅在 GitLab 中记录模棱两可的参数
- javascript - 如何在稍后通过视图文件包含的其他 js 文件中使用 laravel-mix 文件(webpack)中的 js 函数?
- c - 将裸机 ARM 的 Rust 代码正确编译为静态库和 x86_64 的二进制文件?
- javascript - 窗口(浏览器)和全局(Node.js)对象之间的区别