J'essaie de récupérer les données saisies par l'utilisateur dans un champ de type TextField afin de les transmettre à une fonction appelée void _filterList(value)
. Cependant, chaque fois que je mets du texte, ces erreurs apparaissent :
W/IInputConnectionWrapper( 7715): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 7715): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 7715): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 7715): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 7715): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 7715): endBatchEdit on inactive InputConnection
Voici mon code :
List filteredlist = [];
List entries = [];
bool isSearching = false;
getCountries() async {
var response =
await Dio().get('https://restcountries.eu/rest/v2/regionalbloc/eu');
return response.data;
}
@override
void initState() {
getCountries().then((data) {
setState(() {
entries = filteredlist = data;
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: !isSearching
? Text('All EU Countries')
: TextField(
onChanged: (value) {
_filterList(value);
},
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
icon: Icon(Icons.search, color: Colors.white),
hintText: "Search Here",
hintStyle: TextStyle(color: Colors.white),
)),
actions: <Widget>[
isSearching
? IconButton(
icon: Icon(Icons.cancel),
onPressed: () {
setState(() {
this.isSearching = false;
filteredlist = entries;
});
},
)
: IconButton(
icon: Icon(Icons.search),
onPressed: () {
setState(() {
this.isSearching = true;
});
})
],
),
body: _buildList());
}
C'est ma fonction :
void _filterList(value) {
setState(() {
filteredlist = entries.where(
(entry) => entry['name'].toLoweCase().contains(value.toLowerCase()));
});
}
D'après ce que j'ai compris, il semble y avoir un problème avec le clavier, mais je n'ai pas encore trouvé comment l'éviter.