У меня такая же проблема, Моя задача, я хочу очистить текстовое поле при нажатии кнопки
вот мой код
String searchData = "";
TextEditingController searchEditor = TextEditingController();
Row(
children: <Widget>[
Expanded(
child: TextField( // My textbox
controller: searchEditor,
autofocus: false,
onChanged: (str){
searchData = (str == null)? "" : str;
setState(() {
});
},
decoration: InputDecoration(
prefixIcon: IconTheme(
child: Icon(Icons.search),
data: IconThemeData(color: Colors.blueAccent),
),
labelText: 'Search',
),
),
flex: 8,
),
Expanded(
child: RaisedButton(
color: Basic.hbColor,
textColor: Colors.white,
child: Icon(Icons.clear),
onPressed: (){ // On button click
FocusScope.of(context).unfocus(); // Close keyboard
setState(() {
searchData = "";
});
Future.delayed(Duration(microseconds: 500),(){ //call back after 500 microseconds
searchEditor.clear(); // clear textfield
});
},
elevation: 10,
),
flex: 2,
)
],
)
я решил с помощью ИСПОЛЬЗОВАНИЯ 'searchEditor.clear ();' внутри Future.delayed Потому что, когда мы вызываем FocusScope.of (context) .unfocus (); для закрытия клавиатуры, для закрытия требуется несколько микросекунд, поэтому отображается это WANRING strong> то есть getTextBeforeCursor on inactive InputConnection
для преодоления я вызвал searchEditor.clear (); метод через несколько микросекунд
это работает для меня.
person
Shamim
schedule
26.11.2019