我在实现TextField时遇到了一些困难。更具体地说,我尝试使用控制器清除按钮的onPress方法上的TextField。 controller.clear()从TextField中删除文本,但是一旦继续键入,旧值就会重新出现。
重现(使用颤动画廊):
修改lib / demo / material / date_and_time_picker_demo.dart以将控制器添加到其中一个TextField:
将以下内容添加到类 _DateAndTimePickerDemoState 的开头(在我的情况下为第124行):
class _DateAndTimePickerDemoState extends State<DateAndTimePickerDemo> {
++ TextEditingController _controller = new TextEditingController();
DateTime _fromDate = new DateTime.now();
...
将以下行添加到第一个TextField(在我的情况下为第146行):
new TextField(
++ controller: _controller,
decoration: const InputDecoration(
labelText: 'Event name',
),
style: Theme.of(context).textTheme.display1,
),
将新的FlatButton作为最后一个子项添加到Column(在我的情况下为第211-215行):
new FlatButton(
onPressed: () {
_controller.clear();
},
child: new Text('Clear'),
)
现在转到图库中的日期和时间选择器示例,在事件名称TextField中键入内容,按清除并继续键入。按下Clear后,将从TextField中删除该值。一旦继续输入,该值就会收到。
当我想要清除TextField时,总是创建一个新的TextEditingController来解决这个问题。这有效,但似乎并不是预期的做法。
你能帮忙吗?
PS:&gt; flutter doctor:
[✓] Flutter(在Mac OS X 10.12.3 16D32上,频道母版)
[✓]主机可执行兼容性
[✓] Android工具链 - 针对Android设备开发(Android SDK 25.0.2)
[✓] iOS工具链 - 针对iOS设备开发(Xcode 8.3)
[✓] Android Studio(2.2版)
[✓] IntelliJ IDEA社区版(2017.1版)
[✓]连接设备