我在实现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:>扑医:
-
[✓] Flutter(在Mac OS X 10.12.3 16D32上,通道主站)
-
在/ Users / rainerwittmann / Flutter / flutter上晃动
-
框架修订版0d402242c5(5小时前),2017-04-03 22:50:30
-
引擎修订版878f0ff09d
-
Tools Dart版本1.23.0-dev.10.0
-
[✓]主机可执行兼容性
-
下载的可执行文件在主机上执行
-
[✓] Android工具链 - 针对Android设备开发(Android SDK 25.0.2)
-
Android SDK位于/ usr / local / opt / android-sdk
-
平台android-25,构建工具25.0.2
-
ANDROID_HOME = / usr / local / opt / android-sdk
-
Java二进制文件:/ Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
-
Java版:OpenJDK运行时环境(build 1.8.0_112-release-b05)
-
[✓] iOS工具链 - 为iOS设备开发(Xcode 8.3)
-
Xcode位于/Applications/Xcode.app/Contents/Developer
-
Xcode 8.3,Build版本8E162
-
ios-deploy 1.9.0
-
CocoaPods 1.1.1版
-
[✓] Android Studio(2.2版)
-
Android Studio at / Applications / Android Studio.app/Contents
-
Gradle版本2.14.1
-
Java版:OpenJDK运行时环境(build 1.8.0_112-release-b05)
-
[✓] IntelliJ IDEA社区版(2017.1版)
-
Dart插件版本171.4006
-
Flutter插件版本12.0
-
[✓]已连接的设备
-
iPhone 7•59820DDC-6A72-475E-84C0-A2E837F62572•ios•iOS 10.3(模拟器)
1 回答
听起来像个臭虫 . 你愿意在https://github.com/flutter/flutter/issues/new提交错误吗?