import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart';

class MhtSleepReportPage extends StatefulWidget {
  const MhtSleepReportPage({super.key});
  @override
  State<MhtSleepReportPage> createState() => _MhtSleepReportPageState();
}

class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
  UserInfoController userInfoController = Get.find();
  MHTHomeController deviceController = Get.find();
  MHTHomeController homeController = Get.find();
  double borderRadius = 16.rpx;

  var formFieldController = FormFieldController<String>(null);
  var personInfo = {}.obs;

  @override
  void initState() {
    super.initState();
    if (userInfoController.model.login == 1) {
      //查询人员信息列表
      deviceController.getPersonList();
    }
  }

  @override
  Widget build(BuildContext context) {
    deviceController.getDeviceList(group: 'room').then((apiResponse) {
      if (apiResponse.code != HttpStatusCodes.ok) {
        if (context.mounted) {
          // TopSlideNotification.show(
          //   context,
          //   text: apiResponse.msg!,
          //   textColor: themeController.currentColor.sc9,
          // );
        }
      } else {
        //请求睡眠报告
        // deviceController.getSleepReport();
      }
    });
    int login = userInfoController.model.login!;
    return GestureDetector(
        onTap: () => FocusScope.of(context).unfocus(),
        child: Container(
          decoration: const BoxDecoration(
            image: DecorationImage(
              image: AssetImage('assets/images/new_background.png'), // 本地图片
              fit: BoxFit.fill, // 填满整个 Container
            ),
          ),
          child: Scaffold(
            backgroundColor: Colors.transparent,
            body: SafeArea(
              child: Container(
                width: MediaQuery.sizeOf(context).width,
                height: MediaQuery.sizeOf(context).height,
                child: Column(
                  mainAxisSize: MainAxisSize.max,
                  mainAxisAlignment: (userInfoController.model.login! != null &&
                          userInfoController.model.login! == 1)
                      ? MainAxisAlignment.start
                      : MainAxisAlignment.center,
                  children: [
                    //未登录
                    Obx(() {
                      if (userInfoController.model.login! == null ||
                          userInfoController.model.login! == 0) {
                        return Text(
                          "登录查看睡眠报告".tr,
                          style:
                              TextStyle(color: Colors.white, fontSize: 30.rpx),
                        );
                      }
                      return Container();
                    }),
                    //已登录
                    Obx(() {
                      if (userInfoController.model.login! != null &&
                          userInfoController.model.login! == 1) {
                        final list = deviceController.personnelList.value;
                        if (list.isNotEmpty &&
                            formFieldController.value == null) {
                          WidgetsBinding.instance.addPostFrameCallback((_) {
                            formFieldController.value = list[0]["mac"];
                            personInfo.value = list[0];
                            homeController.selectPerson.value = list[0];
                            homeController.selectDevcie.value = list[0]["mac"];
                            deviceController
                                .getSleeps(formFieldController.value);
                            homeController.updateAll();
                          });
                        }
                        if (homeController.personnelList.value.length != 0)
                          return Padding(
                            padding: EdgeInsetsDirectional.fromSTEB(
                                0.rpx, 40.rpx, 30.rpx, 10.rpx),
                            child: Container(
                              width: MediaQuery.sizeOf(context).width,
                              constraints: BoxConstraints(
                                minHeight: 60.rpx,
                              ),
                              decoration: BoxDecoration(
                                color: Colors.transparent,
                                borderRadius: BorderRadius.circular(20.rpx),
                              ),
                              child: Padding(
                                padding: EdgeInsetsDirectional.fromSTEB(
                                    30.rpx, 16.rpx, 16.rpx, 25.rpx),
                                child: Container(
                                  width: MediaQuery.sizeOf(context).width,
                                  child: Row(
                                    mainAxisSize: MainAxisSize.max,
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    children: [
                                      ScrollbarTheme(
                                        data: ScrollbarThemeData(
                                          thumbColor: MaterialStateProperty.all(
                                              Colors.transparent),
                                          trackColor: MaterialStateProperty.all(
                                              Colors.transparent),
                                          trackBorderColor:
                                              MaterialStateProperty.all(
                                                  Colors.transparent),
                                        ),
                                        child: ValueListenableBuilder(
                                            valueListenable:
                                                formFieldController,
                                            builder: (c, a, s) => ClipRRect(
                                                borderRadius:
                                                    BorderRadius.circular(
                                                        36.rpx),
                                                child: Theme(
                                                  data: Theme.of(context)
                                                      .copyWith(
                                                    splashColor:
                                                        Colors.transparent,
                                                    highlightColor:
                                                        Colors.transparent,
                                                    hoverColor:
                                                        Colors.transparent,
                                                  ),
                                                  child: FlutterFlowDropDown<
                                                      String>(
                                                    controller:
                                                        formFieldController,
                                                    options: deviceController
                                                        .personnelList.value
                                                        .map<String>((d) =>
                                                            "${d["mac"]}")
                                                        .toList(),
                                                    optionLabels:
                                                        deviceController
                                                            .personnelList.value
                                                            .map<String>((d) {
                                                      var s =
                                                          d["name"] ?? d["mac"];
                                                      if (s == null) {
                                                        return "";
                                                      } else {
                                                        return "$s";
                                                      }
                                                    }).toList(),
                                                    onChanged: (val) {
                                                      final list =
                                                          deviceController
                                                              .personnelList
                                                              .value;
                                                      final selectedPerson =
                                                          list.firstWhere(
                                                        (element) =>
                                                            element['mac'] ==
                                                            val,
                                                        orElse: () =>
                                                            null, // 防止找不到时报错
                                                      );
                                                      homeController
                                                              .selectPerson
                                                              .value =
                                                          selectedPerson;
                                                      personInfo.value =
                                                          selectedPerson;

                                                      homeController
                                                              .selectedDayIndex =
                                                          (6).obs;
                                                      print("$val");
                                                      if (val == null) {
                                                        homeController.sleepDays
                                                            .value = [];
                                                      } else {
                                                        homeController
                                                                .selectDevcie
                                                                .value =
                                                            formFieldController
                                                                .value!;
                                                        deviceController.getSleeps(
                                                            formFieldController
                                                                .value);
                                                        homeController
                                                            .updateAll();
                                                      }
                                                    },
                                                    width: 300.rpx,
                                                    height: 81.rpx,
                                                    maxHeight: 300.rpx,
                                                    textStyle: TextStyle(
                                                      fontSize: 28.rpx,
                                                      overflow:
                                                          TextOverflow.ellipsis,
                                                      color: Colors.white,
                                                    ),
                                                    hintText: '',
                                                    icon: Icon(
                                                      Icons
                                                          .keyboard_arrow_down_rounded,
                                                      color: stringToColor(
                                                          "#FFFFFF"),
                                                      size: 30.rpx,
                                                    ),
                                                    fillColor: stringToColor(
                                                        "#184468"),
                                                    elevation: 2,
                                                    borderColor:
                                                        Colors.transparent,
                                                    borderWidth: 2,
                                                    borderRadius: 0.rpx,
                                                    margin:
                                                        EdgeInsetsDirectional
                                                            .fromSTEB(
                                                                32.rpx,
                                                                8.rpx,
                                                                32.rpx,
                                                                8.rpx),
                                                    hidesUnderline: true,
                                                    isOverButton: false,
                                                    isSearchable: false,
                                                    isMultiSelect: false,
                                                  ),
                                                ))),
                                      ),
                                    ],
                                  ),
                                ),
                              ),
                            ),
                          );
                      }
                      if (userInfoController.model.login != null &&
                          userInfoController.model.login == 1)
                        return Expanded(child: NullDataWidget());
                      return Container();
                    }),

                    Obx(() {
                      if (homeController.selectDevcie.value != null &&
                          homeController.selectDevcie.value!.isNotEmpty)
                        return Expanded(
                          child: NewSleepReportPage(
                            data: {
                              "tag": "123",
                              'date': DateTime.now().millisecondsSinceEpoch,
                              'mac': homeController.selectDevcie.value,
                              'person': homeController.selectPerson.value,
                              'backgroundImg':
                                  'assets/images/new_background.png',
                              'arrow': false,
                              'noBackImg': true,
                            },
                          ),
                        );
                      // }
                      return Container();
                    }),

                    // Expanded(
                    //   child: NewSleepReportPage(
                    //     data: {
                    //       "tag": "123",
                    //       'date': DateTime.now().millisecondsSinceEpoch,
                    //       'mac': homeController.selectDevcie.value,
                    //       'person': homeController.selectPerson.value,
                    //       'backgroundImg': 'assets/images/new_background.png',
                    //     },
                    //   ),
                    // ),
                    // }
                  ],
                ),
              ),
            ),
          ),
        ));
  }
}
