/* import 'package:flutter/material.dart'; import 'package:rasadyar_app/presentation/common/app_color.dart'; import 'package:rasadyar_app/presentation/common/assets.dart'; import 'package:rasadyar_app/presentation/utils/color_utils.dart'; import 'package:rasadyar_app/presentation/widget/vec_widget.dart'; class RFabOutlined extends StatefulWidget { final Widget icon; VoidCallback? onPressed; final Color backgroundColor; final Color? borderColor; final double? radius; OutlinedBorder? shapeBorder; @override State createState() => _RFabOutlinedState(); //region General RFabOutlined({ required this.icon, required this.onPressed, required this.backgroundColor, required this.borderColor, this.radius = 56.0, super.key, }) : shapeBorder = CircleBorder( side: BorderSide(color: borderColor ?? Colors.transparent), ); RFabOutlined.noBorder({ required this.icon, required this.onPressed, required this.backgroundColor, super.key, }) : borderColor = Colors.transparent, radius = 56.0, shapeBorder = CircleBorder( side: BorderSide(color: Colors.transparent, width: 1), ); RFabOutlined.small({ required this.icon, required this.onPressed, required this.backgroundColor, required this.borderColor, super.key, }) : radius = 40.0, shapeBorder = CircleBorder( side: BorderSide(color: borderColor ?? Colors.transparent, width: 1), ); RFabOutlined.smallNoBorder({ required this.icon, required this.onPressed, required this.backgroundColor, super.key, }) : borderColor = Colors.transparent, radius = 40.0, shapeBorder = CircleBorder( side: BorderSide(color: Colors.transparent, width: 1), ); //endregion //region Add RFabOutlined.smallAdd({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.greenNormal, borderColor: AppColor.greenNormal, icon: vecWidget2( Assets.vecAddSvg, color: AppColor.greenNormal, ), ); RFabOutlined.smallAddNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.greenNormal, icon: vecWidget( Assets.vecAddSvg, color: onPressed != null ? AppColor.greenNormal : AppColor.greenNormal.disabledColor, ), ); RFabOutlined.add({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.greenNormal, borderColor: AppColor.greenNormal, icon: vecWidget( Assets.vecAddSvg, color: onPressed != null ? AppColor.greenNormal : AppColor.greenNormal.disabledColor, ), ); RFabOutlined.addNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.greenNormal, icon: vecWidget( Assets.vecAddSvg, color: onPressed != null ? AppColor.greenNormal : AppColor.greenNormal.disabledColor, ), ); //endregion //region Edit RFabOutlined.smallEdit({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecEditSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.smallEditNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecEditSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.edit({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecEditSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.editNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecEditSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); //endregion //region Delete RFabOutlined.smallDelete({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.redNormal, borderColor: AppColor.redNormal, icon: vecWidget( Assets.vecTrashSvg, color: onPressed != null ? AppColor.redNormal : AppColor.redNormal.disabledColor, ), ); RFabOutlined.smallDeleteNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.redNormal, icon: vecWidget( Assets.vecTrashSvg, color: onPressed != null ? AppColor.redNormal : AppColor.redNormal.disabledColor, ), ); RFabOutlined.delete({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.redNormal, borderColor: AppColor.redNormal, icon: vecWidget( Assets.vecTrashSvg, color: onPressed != null ? AppColor.redNormal : AppColor.redNormal.disabledColor, ), ); RFabOutlined.deleteNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.redNormal, icon: vecWidget( Assets.vecTrashSvg, color: onPressed != null ? AppColor.redNormal : AppColor.redNormal.disabledColor, ), ); //endregion //region Action RFabOutlined.smallAction({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecScanSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.smallActionNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecScanSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.action({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecScanSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.actionNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecScanSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); //endregion //region Filter RFabOutlined.smallFilter({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecFilterSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.smallFilterNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecFilterSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.filter({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecFilterSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.filterNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecFilterSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); //endregion //region Download RFabOutlined.smallDownload({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.smallDownloadNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.download({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.downloadNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); //endregion //region Excel RFabOutlined.smallExcel({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.greenDark, borderColor: AppColor.greenDark, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.smallExcelNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.greenDark, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.excel({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.greenDark, borderColor: AppColor.greenDark, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); RFabOutlined.excelNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.greenDark, icon: vecWidget( Assets.vecDownloadSvg, color: onPressed != null ? AppColor.greenDark : AppColor.greenDark.disabledColor, ), ); //endregion //region Back RFabOutlined.smallBack({VoidCallback? onPressed, Key? key}) : this.small( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecArrowLeftSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.smallBackNoBorder({VoidCallback? onPressed, Key? key}) : this.smallNoBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecArrowLeftSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.back({VoidCallback? onPressed, Key? key}) : this( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, borderColor: AppColor.blueNormal, icon: vecWidget( Assets.vecArrowLeftSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); RFabOutlined.backNoBorder({VoidCallback? onPressed, Key? key}) : this.noBorder( key: key, onPressed: onPressed, backgroundColor: AppColor.blueNormal, icon: vecWidget( Assets.vecArrowLeftSvg, color: onPressed != null ? AppColor.blueNormal : AppColor.blueNormal.disabledColor, ), ); //endregion } class _RFabOutlinedState extends State { bool isOnPressed =false; @override Widget build(BuildContext context) { return OutlinedButton( onPressed:widget.onPressed , style: ButtonStyle( side: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.disabled)) { return BorderSide( color: widget.borderColor?.disabledColor ?? AppColor.blueNormal.disabledColor, width: 2, ); } return BorderSide( color: widget.borderColor ?? AppColor.blueNormal, width: 2, ); }), backgroundColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.pressed)) { return widget.backgroundColor; } else if (states.contains(WidgetState.hovered)) { return widget.backgroundColor.hoverColor ?? AppColor.blueNormal.hoverColor; } else if (states.contains(WidgetState.disabled)) { return widget.backgroundColor.disabledColor ?? AppColor.blueNormal.disabledColor; } return Colors.transparent; }), foregroundColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.pressed)) { return Colors.white; } else if (states.contains(WidgetState.disabled)) { return widget.backgroundColor.disabledColor ?? AppColor.blueNormal.disabledColor; } return widget.backgroundColor; }), shape: WidgetStatePropertyAll(widget.shapeBorder), fixedSize: WidgetStatePropertyAll( Size(widget.radius ?? 56, widget.radius ?? 56), ), padding: WidgetStatePropertyAll(EdgeInsets.zero), ), child: widget.icon ); } } */