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 PatrolJobDrawer extends StatefulWidget {
  final _CallBack callback;

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

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

DropMenuItem not = DropMenuItem('已关闭', 0);
DropMenuItem close = DropMenuItem('已完成', 2);
DropMenuItem on = DropMenuItem('执行中', 1);
DropMenuItem overdue = DropMenuItem('待执行', 3);
DropMenuItem complete = DropMenuItem('已逾期', 4);
List<DropMenuItem> sexMenuItems = [not, close, on, complete];

DropMenuItem day = DropMenuItem('日计划', 0);
DropMenuItem circumference = DropMenuItem('周计划', 1);
DropMenuItem month = DropMenuItem('月计划', 2);
List<DropMenuItem> sexMenuItems2 = [day, circumference, month];

typedef _CallBack = void Function(String deviceName, String deviceNo,dynamic stase,dynamic termType);

class _patrolJobDrawer extends State<PatrolJobDrawer> {
  @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) {
                        name = 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) {
                        no = 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, '请选择任务状态', 0),
                  ),
                ),
              ]),
            ),
            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(name,no,satus,termType);
                      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, int type) {
    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) {
                if (0 == type) {
                  key = value;
                } else {
                  key2 = value;
                }
                setState(() {
                  for (var element in list) {
                    if (value == element.label) {
                      if (type == 0) {
                        satus = element.value; // saving the selected value
                      } else {
                        termType = element.value;
                      }
                    }
                  }
                });
              },
              value: type == 0 ? key : key2, // displaying the selected value
            ),
          )),
    );
  }

  dynamic satus = null;
  dynamic termType = null;

  String? key, key2;

  String name = '', no = '';
}
