2017-04-04 109 views
1

实现TextField时遇到一些困难。更具体地说,我试图使用控制器来清除按钮的onPress方法上的TextField。 controller.clear()从TextField中删除文本,但是一旦你继续输入,旧的值就会重新出现。TextField controller.clear()实际上并未清除TextField

重现(使用扑画廊):

修改LIB /演示/材料/ date_and_time_picker_demo.dart到控制器添加到TextField的一个:

添加以下类的开头_DateAndTimePickerDemoState(在我的情况管线124):

class _DateAndTimePickerDemoState extends State<DateAndTimePickerDemo> { 
++ TextEditingController _controller = new TextEditingController(); 
    DateTime _fromDate = new DateTime.now(); 
    ... 

添加以下(在我的情况线146)行到第一个TextField:

new TextField(
++ controller: _controller, 
    decoration: const InputDecoration(
    labelText: 'Event name', 
), 
    style: Theme.of(context).textTheme.display1, 
), 

添加新FlatButton去年孩子列(行211 - 215在我的情况):

new FlatButton(
    onPressed:() { 
    _controller.clear(); 
    }, 
    child: new Text('Clear'), 
) 

现在去的日期和时间采摘例如,在画廊,类型的东西在事件名称TextField,按清除并继续输入。一旦按下清除,该值将从TextField中删除。一旦你继续输入,价值就会降低。

我工作围绕这一问题通过始终创建一个新的TextEditingController当我想清楚的文本字段。这是有效的,但似乎并不是这样做的预期方式。

你能帮忙吗?

PS:>扑医生:

  • [✓]扑(Mac OS X上10.12.3 16D32,通道主)

    • 颤振在/用户/ rainerwittmann /扑动/扑
    • 框架修订0d402242c5(5小时前),2017年4月3日22点50分三十零秒
    • 引擎版本878f0ff09d
    • 工具达特版本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 /本地的/ opt/Android的SDK
    • 的Java二进制文件位于/应用/ Android的工作室。应用/内容/ JRE/JDK /内容/首页/斌/ java的
    • Java版本:OpenJDK的运行时环境(建1.8.0_112释放-B05)
  • [✓] iOS的工具链 - 开发iOS版设备(的Xcode 8.3)

    • 的Xcode在/Applications/Xcode.app/Contents/Developer
    • 的Xcode 8.3,构建版本8E162
    • IOS-部署1.9.0
    • 的CocoaPods版本1.1.1
  • [✓] Android Studio中(版本2.2)

    • Android Studio中在/应用/ Android的Studio.app/Contents
    • 摇篮版本2.14.1
    • 爪哇版本:OpenJDK Runtime Environment(build 1.8.0_112-release-b05)
  • [✓] IntelliJ IDEA Community Edition(版本2017.1 )

    • 达特插件版本171.4006
    • 颤振的插件版本12.0
  • [✓]连接的设备

    • iPhone 7•59820DDC-6A72-475E-84C0-A2E837F62572•IOS •iOS 10.3(模拟器)

回答