flutter - Flutter-web TextFormField 问题
问题描述
通常我可以禁用/灰显一个按钮,直到 TextFormField 通过类似这样的方式满足某些参数:
TextFormField(
controller: _controller
value: (value)
)
SubmitButton(
onPressed: _controller.text.isNotEmpty ? _submit : null;
)
但是当编译为一个网站时,按钮似乎不再知道控制器的价值......
我尝试了几种不同的定位方式,例如 _controller.value.text.isEmpty 和 _controller.text.isEmpty...
我猜我错过了一些东西,或者这种方法对于网络来说是不可能的......还有其他方法可以获得相同的结果吗?
解决方案
老实说,您的代码不应该在flutter mobile
其中任何一个中工作,但可能是因为屏幕键盘会在显示或隐藏时导致小部件重建。要解决这个问题,我们必须使用带有状态变量的有状态小部件,canSubmit
并在 textField 的侦听器onChange
中使用setState
方法更新它。然后每次文本更改时,我们的有状态小部件都会更新提交按钮..
class Page extends StatefulWidget {
@override
_PageState createState() => _PageState();
}
class _PageState extends State<Page> {
bool canSubmit;
@override
void initState() {
canSubmit = false;
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
TextField(
onChanged: (value) {
setState(() {
canSubmit = value.isNotEmpty;
});
},
),
RaisedButton(
onPressed: canSubmit ? _submit : null,
child: Text('Submit'),
)
],
),
),
);
}
void _submit() {
print('Submitted');
}
}
推荐阅读
- swift - 函数不将文本字段上的字符串保存到核心数据
- python - 要下载哪个“视觉”包?
- java - 使用Java8从对象值映射中获取最大值键
- angular7 - Angular 8 静态查询的使用和从 Angular 7 迁移
- python - Ajax 在 Django 中没有显示任何功能
- gcc - gnatmake -o 标志产生不正确的目标文件名
- android - 通过数据库更改,我不断增加对我的可观察对象的重复 onChange 传递
- python - 计算文本文件中不同的单词:Shell 和 Python 中的不同结果
- php - 一个月结束后过去一个月
- c++ - 如何计算两个负整数之间的总和c ++