import 'package:fcs/helpers/theme.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'local_text.dart';

class LocalDropdown<T> extends StatelessWidget {
  final Function(T) callback;
  final IconData iconData;
  final T selectedValue;
  final List<T> values;
  final Function(T) display;
  final String labelKey;

  const LocalDropdown(
      {Key key,
      this.callback,
      this.iconData,
      this.selectedValue,
      this.values,
      this.labelKey,
      this.display})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(left: 5.0, right: 0),
      child: Row(
        children: [
          Padding(
            padding: const EdgeInsets.only(left: 0, right: 10),
            child: Icon(iconData, color: primaryColor),
          ),
          Expanded(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Padding(
                  padding: const EdgeInsets.only(right: 18.0),
                  child: LocalText(
                    context,
                    labelKey,
                    color: Colors.black54,
                    fontSize: 16,
                  ),
                ),
                DropdownButton<T>(
                  isDense: true,
                  value: selectedValue,
                  style: TextStyle(color: Colors.black, fontSize: 14),
                  underline: Container(
                    height: 1,
                    color: Colors.grey,
                  ),
                  onChanged: (T newValue) {
                    callback(newValue);
                  },
                  isExpanded: true,
                  items: values == null
                      ? []
                      : values.map<DropdownMenuItem<T>>((T value) {
                          return DropdownMenuItem<T>(
                            value: value,
                            child: Text(
                                value == null
                                    ? ""
                                    : display != null
                                        ? display(value)
                                        : value.toString(),
                                overflow: TextOverflow.ellipsis,
                                style: TextStyle(color: primaryColor)),
                          );
                        }).toList(),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
