primaryButton method

Widget primaryButton({
  1. required dynamic title,
  2. EdgeInsets? margin,
  3. ButtonSize? buttonSize,
  4. double? borderRadius,
  5. double? elevation,
  6. bool isLoading = false,
  7. bool isDisabled = false,
  8. Color? backgroundColor,
  9. Color? disabledBackgroundColor,
  10. Color? titleColor,
  11. Color? disabledTitleColor,
  12. Color? splashColor,
  13. Color? disabledSplashColor,
  14. Color? borderColor,
  15. Color? disabledBorderColor,
  16. Color? loadingColor,
  17. Widget? loadingWidget,
  18. dynamic onTap()?,
  19. IconPosition? iconPosition,
  20. Widget? iconWidget,
})

Component of Primary Button

Implementation

Widget primaryButton(
    {required title,

    /// change title
    EdgeInsets? margin,

    /// change margin
    ButtonSize? buttonSize,

    /// change button size
    double? borderRadius,

    /// change border radius
    double? elevation,

    /// change elevation
    bool isLoading = false,

    /// change state isLoading
    bool isDisabled = false,

    /// change state isDisable
    Color? backgroundColor,

    /// change background Color
    Color? disabledBackgroundColor,

    /// change disable background color
    Color? titleColor,

    /// change title color
    Color? disabledTitleColor,

    /// change disable title color
    Color? splashColor,

    /// change splash color
    Color? disabledSplashColor,

    /// change disable splash color
    Color? borderColor,

    /// change border color
    Color? disabledBorderColor,

    /// change disable border color
    Color? loadingColor,

    /// change loading color
    Widget? loadingWidget,

    /// change loading widget
    Function()? onTap,

    /// call function using on tap
    IconPosition? iconPosition,

    /// change icon position
    Widget? iconWidget

    /// change icon widget
    }) {
  return ValueListenableBuilder<Size>(
      valueListenable: InitialValue.screenSizeNotifier,
      builder: (context, size, _) {
        return Padding(
          padding: margin ?? const EdgeInsets.symmetric(vertical: 4),
          child: Material(
            color: isDisabled
                ? disabledBackgroundColor ?? ColorTheme.grey700
                : backgroundColor ??
                    ColorTheme.primaryBackgroundColor ??
                    ColorTheme.primary700,
            elevation: elevation ?? 1,
            borderRadius: BorderRadius.circular(borderRadius ?? 12),
            child: InkWell(
              splashColor: isDisabled
                  ? Colors.transparent
                  : splashColor ?? ColorTheme.white,
              borderRadius: BorderRadius.circular(borderRadius ?? 12),
              onTap: isLoading || isDisabled ? () {} : onTap,
              child: Container(
                  alignment: Alignment.center,
                  width: funcButtonSizeConverter(
                      buttonSize ?? ButtonSize.fullWidth),
                  padding:
                      const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(borderRadius ?? 12),
                      border: Border.all(
                          color: isDisabled
                              ? disabledBorderColor ?? ColorTheme.black
                              : borderColor ??
                                  ColorTheme.primaryStrokeColor ??
                                  ColorTheme.primary500)),
                  child: isLoading
                      ? loadingChildContainer(
                          loadingWidget: loadingWidget ??
                              SizedBox(
                                height: funcLoadingSizeConverter(
                                    buttonSize ?? ButtonSize.fullWidth),
                                width: funcLoadingSizeConverter(
                                    buttonSize ?? ButtonSize.fullWidth),
                                child: CircularProgressIndicator(
                                  color: loadingColor ??
                                      titleColor ??
                                      ColorTheme.black,
                                ),
                              ))
                      : childContainerWidget(
                          iconPosition: iconPosition ?? IconPosition.left,
                          body: standardHeaderText(
                              fontSize: funcFontSizeConverter(
                                  buttonSize ?? ButtonSize.fullWidth),
                              text: title,
                              color: isDisabled
                                  ? disabledTitleColor ?? ColorTheme.black
                                  : titleColor ??
                                      ColorTheme.primaryTitleColor ??
                                      ColorTheme.black),
                          icon: iconWidget)),
            ),
          ),
        );
      });
}