StateTextButton.future constructor

StateTextButton.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,
})

StateTextButton 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 StateTextButton.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 StateTextButton(
    key: key,
    onTap: (CustomState<StateTextButton, 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,
  );
}