Files
eatvio_app/lib/widgets/custom_icon_button.dart
2024-02-09 19:54:59 +03:00

73 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
class CustomIconButton extends StatelessWidget {
CustomIconButton({
Key? key,
this.alignment,
this.height,
this.width,
this.padding,
this.decoration,
this.child,
this.onTap,
}) : super(
key: key,
);
final Alignment? alignment;
final double? height;
final double? width;
final EdgeInsetsGeometry? padding;
final BoxDecoration? decoration;
final Widget? child;
final VoidCallback? onTap;
@override
Widget build(BuildContext context) {
return alignment != null
? Align(
alignment: alignment ?? Alignment.center,
child: iconButtonWidget,
)
: iconButtonWidget;
}
Widget get iconButtonWidget => SizedBox(
height: height ?? 0,
width: width ?? 0,
child: IconButton(
padding: EdgeInsets.zero,
icon: Container(
height: height ?? 0,
width: width ?? 0,
padding: padding ?? EdgeInsets.zero,
decoration: decoration ??
BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(9),
border: Border.all(
color: Colors.blueGrey,
width: 1,
),
),
child: child,
),
onPressed: onTap,
),
);
}
/// Extension on [CustomIconButton] to facilitate inclusion of all types of border style etc
extension IconButtonStyleHelper on CustomIconButton {
static BoxDecoration get fillBlueA => BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(14),
);
}