ButtonController<T> constructor

ButtonController<T>({
  1. FDBState initialState = FDBState.disabled,
  2. bool enabled = false,
  3. void onStateChange(
    1. FDBState
    )?,
  4. required Future<T> onPressed(),
  5. void onSuccess(
    1. T value
    )?,
  6. dynamic onError(
    1. dynamic error,
    2. dynamic stackTrace
    )?,
  7. dynamic onAbort()?,
  8. Duration? abortStateDuration,
  9. Duration? errorStateDuration,
  10. Duration? successStateDuration,
  11. required Duration debounceDuration,
  12. Duration? timeout,
  13. required State<StatefulWidget> obj,
})

Implementation

ButtonController(
    {FDBState initialState = FDBState.disabled,
    this.enabled = false,
    this.onStateChange,
    required this.onPressed,
    this.onSuccess,
    this.onError,
    this.onAbort,
    this.abortStateDuration,
    this.errorStateDuration,
    this.successStateDuration,
    required this.debounceDuration,
    this.timeout,
    required this.obj})
    : _state = StreamController<FDBState>() {
  state = _state.stream.asBroadcastStream();
  _stateSink = _state.sink;
  newState = initialState;

  _onStateChangeSubscription = state.listen((FDBState state) {
    _currentState = state;
    _processStateChange(state);
    if (onStateChange != null) {
      onStateChange!(state);
    }
  });
}