import 'package:flutter/material.dart'; import 'package:syncrow_app/features/shared_widgets/default_button.dart'; import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart'; import 'package:syncrow_app/utils/context_extension.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; class CustomBottomSheetWidget extends StatelessWidget { const CustomBottomSheetWidget({ required this.title, super.key, this.onPressed, this.withBack = false, this.image = '', this.imageSize = 200, this.description = '', this.onPressedColor = ColorsManager.primaryTextColor, this.titleStyle, this.descreptionStyle, this.backColor, this.onPressedTitle, this.imageSpace = 8, }); final String image; final double imageSize; final double imageSpace; final String title; final TextStyle? titleStyle; final String description; final TextStyle? descreptionStyle; final bool withBack; final String? onPressedTitle; final void Function()? onPressed; final Color onPressedColor; final Color? backColor; @override Widget build(BuildContext context) { return SizedBox( width: double.infinity, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ if (image.isNotEmpty) Image.asset( image, width: imageSize, ), if (image.isNotEmpty) SizedBox(height: imageSpace), if (title.isNotEmpty) Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), child: Text( title, style: titleStyle ?? context.bodyLarge.copyWith( fontWeight: FontWeight.w700, ), textAlign: TextAlign.center, ), ), if (title.isNotEmpty) const SizedBox(height: 16), if (description.isNotEmpty) Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Text( description, style: descreptionStyle ?? context.bodyLarge, textAlign: TextAlign.center, ), ), if (onPressed != null) Padding( padding: EdgeInsets.only( left: 16, right: 16, top: 32, bottom: withBack ? 0 : 32, ), child: DefaultButton( onPressed: onPressed, child: BodyMedium( text: onPressedTitle ?? '', ), ), ), if (withBack) Padding( padding: const EdgeInsets.fromLTRB(16, 8, 16, 32), child: DefaultButton( onPressed: () { Navigator.pop(context); }, customButtonStyle: ButtonStyle( backgroundColor: WidgetStateProperty.all( backColor ?? ColorsManager.primaryColor), ), customTextStyle: context.bodyMedium.copyWith( color: backColor ?? ColorsManager.primaryTextColor), enabled: true, child: const BodyMedium(text: 'Back'), ), ), ], ), ); } }