start<T> method

Future<T> start<T>(
  1. Future<T> callback()
)

Implementation

Future<T> start<T>(Future<T> Function() callback) {
  Completer<T> completer = Completer();
  callbackList.add(
    <B>({required bool isResult, B? result, Exception? error}) {
      if (isResult) {
        error != null ? completer.completeError(error) : completer.complete(result as T);
      } else {
          callback().then((finalResult) {
            for (var i = 0; i < callbackList.length; i++) {
              callbackList[i](isResult: true, result: finalResult);
            }
            callbackList.clear();
          }).catchError((e, track) {
            print(e);
            print(track);
            for(var callback in callbackList) {
              callback(isResult: true, result: null, error: e);
            }
            callbackList.clear();
          });
      }
    },
  );
  if (callbackList.length == 1) {
    callbackList[0](isResult: false);
  }

  return completer.future;
}