import 'package:deus_app/common/style/gsy_style.dart';
import 'package:deus_app/common/utils/ConstantString.dart';
import 'package:flutter/material.dart';

import '../model/drop_menu_item.dart';

class RepairJobDrawer extends StatefulWidget {
  final _CallBack callback;

  const RepairJobDrawer({super.key, required this.callback});

  @override
  State createState() {
    return _repairJobDrawer();
  }
}

DropMenuItem not = DropMenuItem('待接单', 1);
DropMenuItem close = DropMenuItem('待执行', 2);
DropMenuItem on = DropMenuItem('维修中', 3);
DropMenuItem overdue = DropMenuItem('已关闭', 4);
DropMenuItem complete = DropMenuItem('已完成', 5);
List<DropMenuItem> sexMenuItems = [not, on, overdue, complete];

typedef _CallBack = void Function(String device, String name,dynamic stase);

class _repairJobDrawer extends State<RepairJobDrawer> {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: MediaQuery.removePadding(
        context: context,
        //移除抽屉菜单顶部默认留白
        removeTop: true,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.only(top: 65.0, left: 10, right: 10),
              child: Row(children: [
                Expanded(
                  flex: 2,
                  child: Text(
                    '报修主题',
                    style: TextStyle(
                      color: Colors.black,
                      fontSize: GSYConstant.minTextSize,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                Expanded(
                  child: Container(
                    height: 40,
                    child: TextField(
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                      ),
                      style: TextStyle(fontSize: 14),
                      onChanged: (value) {
                        setState(() {
                          _theme = value;
                        });
                      },
                    ),
                  ),
                  flex: 7,
                ),
              ]),
            ),
            Padding(
              padding: const EdgeInsets.only(top: 20.0, left: 10, right: 10),
              child: Row(children: [
                Expanded(
                  flex: 2,
                  child: Text(
                    '报修单号',
                    style: TextStyle(
                      color: Colors.black,
                      fontSize: GSYConstant.minTextSize,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                Expanded(
                  child: Container(
                    height: 40,
                    child: TextField(
                      decoration: InputDecoration(border: OutlineInputBorder()),
                      style: TextStyle(fontSize: 14),
                      onChanged: (value) {
                        setState(() {
                          _repNum = value;
                        });
                      },
                    ),
                  ),
                  flex: 7,
                ),
              ]),
            ),
            Padding(
              padding: const EdgeInsets.only(top: 20.0, left: 10, right: 10),
              child: Row(children: [
                Expanded(
                  flex: 2,
                  child: Text(
                    '报修状态',
                    style: TextStyle(
                      color: Colors.black,
                      fontSize: GSYConstant.minTextSize,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                Expanded(
                  flex: 7,
                  child: Container(
                    child: dropDownButtonsColumn(sexMenuItems, '请选择任务状态'),
                  ),
                ),
              ]),
            ),
            SizedBox(
              height: 80,
            ),
            Row(
              crossAxisAlignment: CrossAxisAlignment.end,
              mainAxisAlignment: MainAxisAlignment.end,
              children: [
                TextButton(
                  onPressed: () {
                    Navigator.pop(context);
                  },
                  child: Text(ConstantString.cancel),
                  style: ButtonStyle(
                      backgroundColor:
                      MaterialStateProperty.all<Color>(Color(0xFF4875EC)),
                      foregroundColor:
                      MaterialStateProperty.all<Color>(Colors.white),
                      minimumSize: MaterialStateProperty.all(Size(80, 40)),
                      padding: MaterialStateProperty.all(EdgeInsets.zero)),
                ),
                SizedBox(
                  width: 20,
                ),
                TextButton(
                  onPressed: () {
                    if (widget.callback != null) {
                      widget.callback(_theme,_repNum,satus);
                      Navigator.pop(context);
                    }
                  },
                  child: Text(ConstantString.query),
                  style: ButtonStyle(
                      backgroundColor:
                      MaterialStateProperty.all<Color>(Color(0xFF4875EC)),
                      foregroundColor:
                      MaterialStateProperty.all<Color>(Colors.white),
                      minimumSize: MaterialStateProperty.all(Size(80, 40)),
                      padding: MaterialStateProperty.all(EdgeInsets.zero)),
                ),
                SizedBox(
                  width: 20,
                ),
              ],
            )
          ],
        ),
      ),
    );
  }

  Widget dropDownButtonsColumn(List<DropMenuItem> list, String hint) {
    return Container(
      height: 40,
      //gives the height of the dropdown button
      width: MediaQuery.of(context).size.width,
      //gives the width of the dropdown button
      decoration: BoxDecoration(
        border: new Border.all(
          color: Colors.grey, //边框颜色
          width: 1.0, //边框粗细
        ),
        borderRadius:
            const BorderRadius.all(const Radius.circular(4.0)), //边框的弧度
      ),
      // padding: const EdgeInsets.symmetric(horizontal: 13), //you can include padding to control the menu items
      child: Theme(
          data: Theme.of(context).copyWith(
              // canvasColor: Colors.white, // background color for the dropdown items
              buttonTheme: ButtonTheme.of(context).copyWith(
            alignedDropdown:
                true, //If false (the default), then the dropdown's menu will be wider than its button.
          )),
          child: DropdownButtonHideUnderline(
            // to hide the default underline of the dropdown button
            child: DropdownButton<String>(
              iconEnabledColor: Color(0xFF595959),
              // icon color of the dropdown button
              items: list.map((dropMenuItem) {
                return DropdownMenuItem<String>(
                  value: dropMenuItem.label,
                  child: Text(
                    dropMenuItem.label,
                    style: TextStyle(fontSize: 15),
                  ),
                );
              }).toList(),
              hint: Text(
                hint,
                style: TextStyle(fontSize: 15),
              ),
              // setting hint
              onChanged: (String? value) {
                key = value;
                setState(() {
                  for (var element in list) {
                    if (value == element.label) {
                      satus = element.value; // saving the selected value
                    }
                  }
                });
              },
              value: key, // displaying the selected value
            ),
          )),
    );
  }

  String _theme = '', _repNum = '';

  dynamic satus = null;

  String? key;
}
