Я хочу получить и показать данные соответствующего игрока, когда его имя выбрано из списка предложений. У меня есть виджет AutoCompleteTextField
, с помощью которого имя игрока набирается и выбирается из списка, как показано ниже:

Текущая проблема, с которой я сталкиваюсь, это когда выполняется поиск и выбор игрока, затем я сначала получаю значение null
, как показано ниже:

Но когда я нажимаю в поле поиска и снова выберите того же игрока из списка предложений, затем будет выполнен вызов api и данные будут отображаться правильно, как показано ниже:

Текущий код включен itemSubmitted
параметр AutoCompleteTextfield
, я вызываю метод, который показывает данные внутри setState()
, как показано ниже:
itemSubmitted: (item) {
setState(() {
searchTextField.textField.controller.text = item.name;
textInput = true;
showData();
});
},
Внутри showData()
, я разбираю json на входной поиск в поле, и если данные игрока найдены, я делаю еще один вызов внутри того же метода для получения данных, как показано ниже:
showData() {
String input = searchTextField.textField.controller.text.toLowerCase();
found = false;
for (var i = 0; i < PlayerViewModel.players.length; i++) {
if (PlayerViewModel.players[i].name.toLowerCase() == input) {
players = PlayerViewModel.players[i];
found = true;
break;
}
}
if (found) {
fetchJson(players.pid);
}
}
void fetchJson(int pid) async {
var response = await http.get(
'http://cricapi.com/api/playerStats?apikey=<apiKey>&pid=$pid');
if (response.statusCode == 200) {
String responseBody = response.body;
var responseJson = jsonDecode(responseBody);
name = responseJson['name'];
playingRole = responseJson['playingRole'];
battingStyle = responseJson['battingStyle'];
country = responseJson['country'];
imageURL = responseJson['imageURL'];
data = responseJson;
Данные извлекаются правильно, но не запускаются с первой попытки, когда я выбрать игрока из списка, но только со второй попытки, когда я снова выберу игрока из списка. И это происходит при каждом последующем поиске игрока. Что мне здесь не хватает? Как получить и показать данные, как только имя игрока выбрано из списка предложений?