import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:syncrow_app/features/devices/bloc/curtain_bloc/curtain_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/curtain_bloc/curtain_event.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/generated/assets.dart'; class CurtainButtons extends StatelessWidget { const CurtainButtons({super.key, required this.curtain}); final DeviceModel curtain; @override Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildButton( onTap: () => context.read().add(CloseCurtain(curtain.productType!)), iconPath: Assets.assetsIconsCurtainsIconCloseCurtain, ), _buildButton( onTap: () => context.read().add(PauseCurtain()), iconPath: Assets.assetsImagesPause, isSvg: false, ), _buildButton( onTap: () => context.read().add(OpenCurtain(curtain.productType!)), iconPath: Assets.assetsIconsCurtainsIconOpenCurtain, ), ], ); } Widget _buildButton({ required VoidCallback onTap, required String iconPath, bool isSvg = true, }) { return Stack( alignment: Alignment.center, children: [ DecoratedBox( decoration: BoxDecoration( shape: BoxShape.circle, boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 1, blurRadius: 5, offset: const Offset(3, 3), ), ], ), child: InkWell( overlayColor: MaterialStateProperty.all(Colors.transparent), onTap: onTap, child: const SizedBox.square(dimension: 60), ), ), Padding( padding: const EdgeInsets.only(right: 5, bottom: 5), child: InkWell( overlayColor: MaterialStateProperty.all(Colors.transparent), onTap: onTap, child: isSvg ? SvgPicture.asset(iconPath, width: 110, height: 110) : Image.asset(iconPath, width: 60, height: 60), ), ), ], ); } }