flunter Futureの正しい使い方


flunterでは非同期的なタスクがよく使われますが、dartでは非同期的なタスクはFutureで処理されています.Futureではどのように非同期的な操作を実行しますか?ネット上のFuture教程、原理は全部原理を説明しますが、干物がないので、どうやって使うか教えてくれません.今日ソースを見て、やっとFutureの使い方が分かりました.実はjavaScriptのpromiseと似ていますが、promiseのパラメータ関数のパラメータはreolveを提供しています.rejectの方法で状態をコントロールするなら、Futureはないですか?もとはdart:asyncはCompletterクラスを提供し、このクラスのインスタンスを通じてFutureを生成し、このインスタンスで生成された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の状態をコントロールできます.