93 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/material.dart';
 | 
						|
 | 
						|
import '../utils/size_utils.dart';
 | 
						|
 | 
						|
class customFloatingButton extends StatelessWidget {
 | 
						|
  const customFloatingButton({super.key, 
 | 
						|
    this.shape,
 | 
						|
    this.variant,
 | 
						|
    this.alignment,
 | 
						|
    this.margin,
 | 
						|
    this.onTap,
 | 
						|
    this.width,
 | 
						|
    this.height,
 | 
						|
    this.child,
 | 
						|
    this.color,
 | 
						|
  });
 | 
						|
 | 
						|
  final FloatingButtonShape? shape;
 | 
						|
  final FloatingButtonVariant? variant;
 | 
						|
  final Alignment? alignment;
 | 
						|
  final EdgeInsetsGeometry? margin;
 | 
						|
  final VoidCallback? onTap;
 | 
						|
  final double? width;
 | 
						|
  final double? height;
 | 
						|
  final Widget? child;
 | 
						|
  final Color? color;
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context) {
 | 
						|
    return alignment != null
 | 
						|
        ? Align(
 | 
						|
            alignment: alignment ?? Alignment.center,
 | 
						|
            child: _buildFabWidget(),
 | 
						|
          )
 | 
						|
        : _buildFabWidget();
 | 
						|
  }
 | 
						|
 | 
						|
  Widget _buildFabWidget() {
 | 
						|
    return Padding(
 | 
						|
      padding: margin ?? EdgeInsets.zero,
 | 
						|
      child: FloatingActionButton(
 | 
						|
        backgroundColor: _setColor(),
 | 
						|
        onPressed: onTap,
 | 
						|
        child: child,
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  BoxDecoration _buildDecoration() {
 | 
						|
    return BoxDecoration(
 | 
						|
      color: _setColor(),
 | 
						|
      borderRadius: _setBorderRadius(),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  Color _setColor() {
 | 
						|
    if (color != null) {
 | 
						|
      return color!;
 | 
						|
    }
 | 
						|
    switch (variant) {
 | 
						|
      case FloatingButtonVariant.FillBlueA700:
 | 
						|
        return const Color(0xFF1976D2); // Example color for FillBlueA700
 | 
						|
      default:
 | 
						|
        return Colors.black;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  BorderRadius _setBorderRadius() {
 | 
						|
    switch (shape) {
 | 
						|
      case FloatingButtonShape.RoundedBorder6:
 | 
						|
        return BorderRadius.circular(
 | 
						|
          getHorizontalSize(
 | 
						|
            6.00,
 | 
						|
          ),
 | 
						|
        );
 | 
						|
      default:
 | 
						|
        return BorderRadius.circular(
 | 
						|
          getHorizontalSize(
 | 
						|
            6.00,
 | 
						|
          ),
 | 
						|
        );
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
enum FloatingButtonShape {
 | 
						|
  RoundedBorder6,
 | 
						|
}
 | 
						|
 | 
						|
enum FloatingButtonVariant {
 | 
						|
  FillBlueA700,
 | 
						|
}
 |