Эй, я очень новичок в Dart Futures, и у меня есть следующая ситуация.Dart Component: Как вернуть результат асинхронного обратного вызова?
Когда пользователь вводит письмо в пользовательском интерфейсе, вызывается метод addressChanged()
в моем ui_component. Этот метод вызывает метод getProposals()
в моих картах componentenet, который выполняет асинхронный запрос API-интерфейсов google. Как только результаты здесь, я хочу вернуть их в компонент пользовательского интерфейса, который будет заполнять раскрывающийся список просасалов в пользовательском интерфейсе.
Я застрял с последним шагом: Как (и как лучше всего) вернуть результаты асинхронной функции обратного вызова в родительский компонент (при сохранении компонента многократных карт?).
Это то, что я пробовал:
1) UI_Component:
// I get called if a user typed a new letter
Future addressChanged(dynamic event) async {
String id = event.target.id;
String address = event.target.value;
if(id=="pickup") {
this.pickup = address;
} else if(id=="destination") {
this.destination = address;
}
// this is where I call the subcomponent and want to get the address propasals
String proposals = await googleMap.getProposals(address,id);
print(proposals);
populateProposalDropdown();
}
2) Google Map компонента:
Future getProposals(String address,String id) async {
await _getProposals(address,id);
}
Future _getProposals(String address,String id) async {
if(address != "") {
autocompleteService.getPlacePredictions(
new AutocompletionRequest()
..input = address
,
(predictions,status) {
List<String> result = [];
if(status == PlacesServiceStatus.OK) {
predictions.forEach(
(AutocompletePrediction prediction) =>
result.add(prediction.description)
);
}
// HERE is the problem: How do I return this result from the callback as a result of the getProposals method?
return result;
}
);
}
}
ли 'AutoCompleteService' код? Его можно было бы переписать, чтобы вернуть «Будущее», а не вызвать обратный вызов, что избавит вас от необходимости использовать «Завершить» при его вызове. –
Несчастливо его нет: https://pub.dartlang.org/packages/google_maps. Они должны реально реализовать библиотеку, подобную этой ;-) – Blackbam