StateOutlinedButton.future constructor

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

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