2017-04-04 158 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(模擬器)

回答