import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:vibration/vibration.dart'; import '../../constant/box_name.dart'; import '../../constant/colors.dart'; import '../../constant/style.dart'; import '../../main.dart'; class MyElevatedButton extends StatelessWidget { final String title; final VoidCallback onPressed; final Color kolor; final int vibrateDuration; const MyElevatedButton({ Key? key, required this.title, required this.onPressed, this.kolor = AppColor.primaryColor, this.vibrateDuration = 100, }) : super(key: key); @override Widget build(BuildContext context) { bool vibrate = box.read(BoxName.isvibrate) ?? true; return ElevatedButton( style: ButtonStyle( backgroundColor: WidgetStateProperty.all(kolor), shadowColor: WidgetStateProperty.all(Colors.transparent), shape: WidgetStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), ), onPressed: () async { // Handle haptic feedback for both iOS and Android if (vibrate == true) { if (Platform.isIOS) { HapticFeedback.selectionClick(); } else if (Platform.isAndroid) { await Vibration.vibrate(duration: vibrateDuration); } else {} } // Ensure the onPressed callback is called after haptic feedback onPressed(); }, child: Text( title, textAlign: TextAlign.center, style: AppStyle.title.copyWith(color: AppColor.secondaryColor), ), ); } }