Files
rasadyar_application/lib/presentation/widget/buttons/fab_outlined.dart
mr.mojtaba 0c750e1c01 feat :
action
 profile
2025-04-21 15:45:15 +03:30

608 lines
17 KiB
Dart

/*
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<RFabOutlined> 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<RFabOutlined> {
bool isOnPressed =false;
@override
Widget build(BuildContext context) {
return OutlinedButton(
onPressed:widget.onPressed ,
style: ButtonStyle(
side: WidgetStateProperty.resolveWith<BorderSide?>((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<Color?>((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<Color?>((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
);
}
}
*/