당신이 필요로하는 경우
나는 그것의 아래, 실제로 비동기 호출 (파일 읽기/아약스/등)을 수행하거나 로컬 변수를 받고 있는지 항상 Future<List<Base>>
을 반환하는 함수를 정의 할 미래를 만들려면 Completer
을 사용할 수 있습니다. 문서의 Completer
class을 참조하십시오. 다음은 예입니다
Future<List<Base>> GetItemList(){
var completer = new Completer();
// At some time you need to complete the future:
completer.complete(new List<Base>());
return completer.future;
}
그러나 대부분의 시간을 당신이 completer와 미래를 만들 필요가 없습니다. 이 경우처럼 :
Future<List<Base>> GetItemList(){
var completer = new Completer();
aFuture.then((a) {
// At some time you need to complete the future:
completer.complete(a);
});
return completer.future;
}
코드는 completers를 사용하여 매우 복잡해질 수 있습니다. then()
가 Future
을 반환하기 때문에 당신은 단순히 너무, 다음 대신 사용할 수 있습니다
Future<List<Base>> GetItemList(){
return aFuture.then((a) {
// Do something..
});
}
또는 파일 입출력에 대한 예제 :
Future<List<String>> readCommaSeperatedList(file){
return file.readAsString().then((text) => text.split(','));
}
더 팁 this blog post를 참조하십시오.