StateButton.future constructor

StateButton.future({
  1. Key? key,
  2. required StateFutureFunction<Set<ButtonState>> futureOnTab,
  3. required Widget initial,
  4. Widget? icon,
  5. Widget? loaderIcon,
  6. Widget? successIcon,
  7. Widget? failIcon,
  8. Widget? disableIcon,
  9. Widget? fail,
  10. Widget? success,
  11. Widget? loader,
  12. Widget? disable,
  13. ButtonStyle? style,
  14. bool hasState = true,
})

StateButton with states = null and without use global key. The state will be ButtonState.progressing when futureOnTab start and end with ButtonState return in futureOnTab

Implementation

factory StateButton.future(
    {Key? key,
    required StateFutureFunction<Set<ButtonState>> futureOnTab,
    required Widget initial,
    Widget? icon,
    Widget? loaderIcon,
    Widget? successIcon,
    Widget? failIcon,
    Widget? disableIcon,
    Widget? fail,
    Widget? success,
    Widget? loader,
    Widget? disable,
    ButtonStyle? style,
    bool hasState = true}) {
  Future _future(CustomState<dynamic, ButtonState> customState) async {
    customState.updateCustomState(ButtonState.progressing).call(true);
    final states = await futureOnTab(currentState: customState.customState);
    customState.replaceCustomState(states);
  }

  return StateButton(
    key: key,
    onTap: (CustomState<StateButton, ButtonState> customState) {
      _future(customState);
    },
    initial: initial,
    icon: icon,
    loaderIcon: loaderIcon,
    failIcon: failIcon,
    successIcon: successIcon,
    style: style,
    fail: fail,
    success: success,
    loader: loader,
    disable: disable,
    disableIcon: disableIcon,
  );
}