import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/size_config.dart';

import '../../../core/theme/colors.dart';

class DetailDropDown extends StatefulWidget {
  final String title;
  final List<String> items;
  const DetailDropDown({required this.title, required this.items, super.key});

  @override
  State<DetailDropDown> createState() => _DetailDropDownState();
}

class _DetailDropDownState extends State<DetailDropDown>
    with SingleTickerProviderStateMixin {
  bool isOpen = true;
  late AnimationController _animationController;
  late Animation<double> _rotationAnimation;

  @override
  void initState() {
    super.initState();
    _animationController = AnimationController(
      duration: const Duration(milliseconds: 300),
      vsync: this,
    );
    _rotationAnimation = Tween<double>(begin: 0.0, end: 0.5).animate(
      CurvedAnimation(parent: _animationController, curve: Curves.elasticIn),
    );
  }

  @override
  void dispose() {
    _animationController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Row(
          children: [
            InkWell(
              onTap: () {
                setState(() {
                  isOpen = !isOpen;
                });
                if (isOpen) {
                  _animationController.forward();
                } else {
                  _animationController.reverse();
                }
              },
              child: Container(
                width: 24.0.w(),
                height: 24.0.h(),
                decoration: BoxDecoration(
                  shape: BoxShape.circle,
                  border: Border.all(color: AppColors.grey60),
                ),
                alignment: Alignment.center,
                child: AnimatedBuilder(
                  animation: _rotationAnimation,
                  builder: (context, child) {
                    return Icon(
                      isOpen
                          ? CupertinoIcons.chevron_up
                          : CupertinoIcons.chevron_down,
                      color: AppColors.grey60,
                      size: 12,
                    );
                  },
                ),
              ),
            ),
            SizedBox(width: 8.0.w()),
            Text(
              widget.title,
              style: TextStyle(
                color: AppColors.grey80,
                fontSize: 16.0.sp(),
                fontWeight: FontWeight.w600,
              ),
            ),
          ],
        ),
        SizedBox(height: 12.0.h()),
        AnimatedSize(
          duration: const Duration(milliseconds: 300),
          curve: Curves.easeInOut,
          child:
              isOpen
                  ? Column(
                    children:
                        widget.items
                            .map(
                              (e) => Padding(
                                padding: EdgeInsets.only(left: 12.0.w()),
                                child: Text(e),
                              ),
                            )
                            .toList(),
                  )
                  : const SizedBox.shrink(),
        ),
      ],
    );
  }
}
