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),
      ),
    );
  }
}
