flunter Futureの正しい使い方
2643 ワード
flunterでは非同期的なタスクがよく使われますが、dartでは非同期的なタスクはFutureで処理されています.Futureではどのように非同期的な操作を実行しますか?ネット上のFuture教程、原理は全部原理を説明しますが、干物がないので、どうやって使うか教えてくれません.今日ソースを見て、やっとFutureの使い方が分かりました.実はjavaScriptのpromiseと似ていますが、promiseのパラメータ関数のパラメータはreolveを提供しています.rejectの方法で状態をコントロールするなら、Futureはないですか?もとはdart:asyncはCompletterクラスを提供し、このクラスのインスタンスを通じてFutureを生成し、このインスタンスで生成されたfutureの成功または失敗の状態を制御する.コードは以下の通りです
completteはpromiseのreolveに相当します.completer.catchErrorはpromiseの中のrejectに相当します.
CompletterでFutureの状態をコントロールできます.
Future openImagePicker () {
Complete completer = new Completer();
// ImagePicker
ImagePicker.singlePicker(
context,
singleCallback: (data) {
completer.complete(data);
},
failCallback:(err) {
completer.catchError(err);
}
);
return completer.future;
}
//
openImagePicker().then((data) {}).catchError((err){});
completterが生成したfutureに戻り、completer.futureの成功状態をcompleter.futureで制御し、completter.cthErrでcompleter.futureの失敗状態を制御します.completteとcompleter.ctchErr方法のパラメータはfutureの戻り値です.completteはpromiseのreolveに相当します.completer.catchErrorはpromiseの中のrejectに相当します.
CompletterでFutureの状態をコントロールできます.