92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/material.dart';
 | 
						|
 | 
						|
import '../utils/size_utils.dart';
 | 
						|
 | 
						|
class CustomFloatingButton extends StatelessWidget {
 | 
						|
  CustomFloatingButton(
 | 
						|
      {super.key, this.shape,
 | 
						|
      this.variant,
 | 
						|
      this.alignment,
 | 
						|
      this.margin,
 | 
						|
      this.onTap,
 | 
						|
      this.width,
 | 
						|
      this.height,
 | 
						|
      this.child});
 | 
						|
 | 
						|
  FloatingButtonShape? shape;
 | 
						|
 | 
						|
  FloatingButtonVariant? variant;
 | 
						|
 | 
						|
  Alignment? alignment;
 | 
						|
 | 
						|
  EdgeInsetsGeometry? margin;
 | 
						|
 | 
						|
  VoidCallback? onTap;
 | 
						|
 | 
						|
  double? width;
 | 
						|
 | 
						|
  double? height;
 | 
						|
 | 
						|
  Widget? child;
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context) {
 | 
						|
    return alignment != null
 | 
						|
        ? Align(
 | 
						|
            alignment: alignment ?? Alignment.center,
 | 
						|
            child: _buildFabWidget(),
 | 
						|
          )
 | 
						|
        : _buildFabWidget();
 | 
						|
  }
 | 
						|
 | 
						|
  _buildFabWidget() {
 | 
						|
    return Padding(
 | 
						|
      padding: margin ?? EdgeInsets.zero,
 | 
						|
      child: FloatingActionButton(
 | 
						|
        backgroundColor: _setColor(),
 | 
						|
        onPressed: onTap,
 | 
						|
        child: Container(
 | 
						|
          alignment: Alignment.center,
 | 
						|
          width: getSize(width ?? 0),
 | 
						|
          height: getSize(height ?? 0),
 | 
						|
          decoration: _buildDecoration(),
 | 
						|
          child: child,
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  _buildDecoration() {
 | 
						|
    return BoxDecoration(
 | 
						|
      color: _setColor(),
 | 
						|
      borderRadius: _setBorderRadius(),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  _setColor() {
 | 
						|
    switch (variant) {
 | 
						|
      default:
 | 
						|
        return const Color.fromRGBO(253, 202, 101, 1.0);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  _setBorderRadius() {
 | 
						|
    switch (shape) {
 | 
						|
      default:
 | 
						|
        return BorderRadius.circular(
 | 
						|
          getHorizontalSize(
 | 
						|
            6.00,
 | 
						|
          ),
 | 
						|
        );
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
enum FloatingButtonShape {
 | 
						|
  RoundedBorder6,
 | 
						|
}
 | 
						|
 | 
						|
enum FloatingButtonVariant {
 | 
						|
  FillBlueA700,
 | 
						|
}
 |