
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/utils.dart';


class DropValue {
  int id;
  String value;
  String subValue;

  DropValue(this.id, this.value, this.subValue);

  bool operator ==(o) => o is DropValue && o.value == value && o.id == id;
}

class DropdownField extends StatefulWidget {
  String? hint;
  List<DropValue>? list;
  DropValue? dropdownValue;
  Function(DropValue) onSelect;

  DropdownField(this.onSelect, {Key? key, this.hint, this.list,this.dropdownValue}) : super(key: key);

  @override
  State<DropdownField> createState() => _DropdownFieldState();
}

class _DropdownFieldState extends State<DropdownField> {
  DropValue? dropdownValue;
  List<DropValue> defaultV = [
    DropValue(1, "One", ""),
    DropValue(2, "Two", ""),
  ];

  @override
  void initState() {
    super.initState();
    dropdownValue = widget.dropdownValue;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: Utils.containerColorRadiusBorderWidth(
        MyColors.white,
        0,
        MyColors.darkPrimaryColor,
        2,
      ),
      margin: const EdgeInsets.all(0),
      padding: const EdgeInsets.only(left: 8, right: 8),
      child: DropdownButton<DropValue>(
        value: dropdownValue,
        icon: const Icon(Icons.keyboard_arrow_down_sharp),
        elevation: 16,
        iconSize: 16,
        iconEnabledColor: borderColor,
        iconDisabledColor: borderColor,
        isExpanded: true,
        style: const TextStyle(color: Colors.black, fontWeight: FontWeight.w600),
        hint: (widget.hint ?? "").toText(color: borderColor, fontSize: 12),
        underline: Container(
          height: 0,
        ),
        onChanged: (DropValue? newValue) {
          setState(() {
            dropdownValue = newValue!;
            widget.onSelect(newValue);
          });
        },
        items: (widget.list ?? defaultV).map<DropdownMenuItem<DropValue>>(
              (DropValue value) {
            return DropdownMenuItem<DropValue>(
              value: value,
              child: value.value.toText(fontSize: 12),
            );
          },
        ).toList(),
      ),
    );
  }
}
