createAsync<TParam, TResult> method

RxCommand<TParam, TResult> createAsync <TParam, TResult>(AsyncFunc1<TParam, TResult> func, { Observable<bool> canExecute, bool emitInitialCommandResult: false, bool emitLastResult: false, bool emitsLastValueToNewSubscriptions: false, TResult initialLastResult })

Creates a RxCommand for an asynchronous handler function with parameter that returns a value func: handler function canExecute : observable that can bve used to enable/diable the command based on some other state change if omitted the command can be executed always except it's already executing isExecuting will issue a bool value on each state change. Even if you subscribe to a newly created command it will issue false For the Observable<CommandResult> that RxCommand publishes in results this normally doesn't make sense if you want to get an initial Result with data==null, error==null, isExceuting==false pass emitInitialCommandResult=true. emitLastResult will include the value of the last successful execution in all CommandResult events unless there is no new result. By default the results Observable and the RxCommand itself behave like a PublishSubject. If you want that it acts like a BehaviourSubject, meaning every new listener gets the last received value, you can set emitsLastValueToNewSubscriptions = true. initialLastResult sets the value of the lastResult property before the first item was received. This is helpful if you use lastResult as initialData of a StreamBuilder

Implementation

static RxCommand<TParam, TResult> createAsync<TParam, TResult>(AsyncFunc1<TParam, TResult> func,
    {Observable<bool> canExecute,
    bool emitInitialCommandResult = false,
    bool emitLastResult = false,
    bool emitsLastValueToNewSubscriptions = false,
    TResult initialLastResult}) {
  return new RxCommandAsync<TParam, TResult>((x) async => func(x), canExecute, emitInitialCommandResult,
      emitLastResult, emitsLastValueToNewSubscriptions, initialLastResult);
}