//字体
import 'package:bottom_picker/resources/arrays.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:scence_map/controller.dart';
import 'package:scence_map/scence_map.dart';

import 'package:syncfusion_flutter_sliders/sliders.dart';
import 'iconContainer.dart';
import "controller.dart";
// import '../login_in/connect/bluetooth_page.dart';
// import '../login_in/connect/config.dart';
// import '../login_in/connect/connect_type.dart';
// import '../login_in/getx/blue_tooth.dart';
// import '../setting/antenna_setting.dart';
// import '../setting/person_details.dart';
// import '../setting/wifi_page.dart';
// import '../setting/xy_change.dart';

ScenceMapController mapcontroller = Get.put(ScenceMapController());

class PassTrack extends StatefulWidget {
  final String date;
  final controller;

  const PassTrack({super.key, required this.date, this.controller});

  @override
  State<PassTrack> createState() => _PasstrackState();
}

class _PasstrackState extends State<PassTrack> {
  final GlobalKey<PopupMenuButtonState<int>> _popupMenuKey =
      GlobalKey<PopupMenuButtonState<int>>();
  final controller = Get.put(PassTrackController("WXLMB", "cp_orad"));
  String str = "播放";
  int sWidth = 0;
  int bits = -1;
  int speed = 50;
  List<int> speedList = [1, 2, 10, 20, 50, 100, 200, 500];
  // int maxLength = 200;
  SfRangeValues _rangevalues = const SfRangeValues(0.0, 200.0);

  @override
  initState() {
    super.initState();
    SchedulerBinding.instance.addPostFrameCallback((_) async {
      //     sWidth = sqrt(screen.width * screen.width + screen.height * screen.height)
      //         .ceil();

      //     // scenceMapController.scale = passTrackPlugin.passTrack_getScale() * 1.0;
      //     fileHandle.date = widget.date;
      //     await fileHandle.init();
      //     //在帧绘制完成后执行数据渲染
      //     // await initPlatformState();
      //     if (fileHandle.pointData.isNotEmpty) {
      //       DecodeDataObj obj = fileHandle.pointData[0].obj!;
      //       scenceMapController.centerXY = Offset(obj.y / 20, obj.x / 20);
      //     }

      //     for (var item in fileHandle.deviceList) {
      //       if (item["point"] != null) {
      //         bits = item["bits"];
      //         break;
      //       }
      //     }
      //     // passTrackPlugin.map_setCenterDevice(bits);
      //     setState(() {
      //       if (fileHandle.pointData.isNotEmpty) {
      //         maxLength = fileHandle.pointData.length;
      //         // _value = maxLength;
      //         _rangevalues = SfRangeValues(0.0, maxLength.toDouble());
      //       }
      //     });
    });
  }

  Future<void> initPlatformState() async {
    // String platformVersion;
    // try {
    //   platformVersion = await passTrackPlugin.getPlatformVersion() ??
    //       'Unknown platform version';
    // } on PlatformException {
    //   platformVersion = 'Failed to get platform version.';
    // }
    // await passTrackPlugin.create(sWidth, sWidth);
    // fileHandle.textureId = await passTrackPlugin.getTextureId() ?? -1;
    // print("textureId: ${fileHandle.textureId}");

    // if (!mounted) return;

    // setState(() {
    //   platformVersion = platformVersion;
    // });
  }

  @override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    var isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
    return OrientationBuilder(builder: (context, orientation) {
      return Stack(
        children: [
          ScenceMapView(
            children: [],
            onUpdate: (Offset center, double scale, double rotation) {
              print("center:$center scale:$scale rotation:$rotation");
            },
          ),
          Positioned(
            width: isPortrait ? size.width * .63 : size.width * .41,
            left: isPortrait ? 190 : 200,
            bottom: 30,
            child: Container(
              padding: const EdgeInsets.only(bottom: 5),
              child: SfRangeSlider(
                min: 0.0,
                // max: maxLength,
                max: controller.allLen,
                values: _rangevalues,
                showTicks: false,
                showLabels: false,
                enableTooltip: true,
                minorTicksPerInterval: 1,
                stepSize: 1,
                onChanged: (SfRangeValues values) {
                  setState(() {
                    _rangevalues = SfRangeValues(values.start.roundToDouble(),
                        values.end.roundToDouble());
                  });
                },
              ),
            ),
          ),
          Positioned(
            left: isPortrait ? 190 : 200,
            bottom: 0,
            child: Row(
              children: [
                const SizedBox(width: 18),
                SizedBox(
                  width: 74,
                  child: ElevatedButton(
                    style: ButtonStyle(
                      backgroundColor: MaterialStateProperty.all<Color?>(
                        str == "播放" ? Colors.blue : Colors.red,
                      ),
                    ),
                    onPressed: () {
                      setState(() {
                        str = str == "播放" ? "暂停" : "播放";
                      });
                    },
                    child: Text(
                      str,
                      style: const TextStyle(fontSize: 12, color: Colors.black),
                    ),
                  ),
                ),
                const SizedBox(width: 5),
                GestureDetector(
                  onTap: () {
                    // 触发 PopupMenuButton 的点击事件
                    final dynamic state = _popupMenuKey.currentState;
                    state.showButtonMenu();
                  },
                  child: Container(
                      width: 70,
                      height: 35,
                      padding: const EdgeInsets.symmetric(horizontal: 6.0),
                      decoration: BoxDecoration(
                        color: const Color.fromARGB(255, 255, 255, 255),
                        border: Border.all(color: Colors.black),
                      ),
                      child: Row(
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          Text(
                            "$speed X",
                            style: const TextStyle(
                                fontSize: 11, color: Colors.black),
                          ),
                          Container(
                            width: 25,
                            child: PopupMenuButton<int>(
                              key: _popupMenuKey,
                              padding: const EdgeInsets.all(1.0),
                              icon: const Icon(Icons.arrow_drop_up,
                                  color: Color.fromARGB(255, 47, 48, 47)),
                              onSelected: (int value) {
                                setState(() {
                                  speed = value;
                                });
                              },
                              // style: ButtonStyle(
                              //   minimumSize: MaterialStateProperty.all<Size>(
                              //       Size(48, 48)), // 设置最小点击区域
                              //   tapTargetSize: MaterialTapTargetSize
                              //       .shrinkWrap, // 设置点击区域大小
                              // ),
                              itemBuilder: (BuildContext context) {
                                return speedList.map((int speed) {
                                  return PopupMenuItem<int>(
                                    height: 30,
                                    value: speed,
                                    child: Text("$speed X速度"),
                                  );
                                }).toList();
                              },
                            ),
                          ),
                        ],
                      )),
                ),
                const SizedBox(width: 12),
                Column(
                  children: [
                    const Text("此处遍数:0"),
                    StreamBuilder<DateTime>(
                      stream: Stream.periodic(
                          const Duration(seconds: 1), (_) => DateTime.now()),
                      builder: (context, snapshot) {
                        if (snapshot.hasData) {
                          final dateTime = snapshot.data!.toLocal();
                          final formattedDate =
                              "${dateTime.year % 100}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}";
                          final formattedTime =
                              "${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}:${dateTime.second.toString().padLeft(2, '0')}";
                          return Text(
                            "$formattedDate $formattedTime",
                            style: const TextStyle(
                              fontSize: 16,
                              fontWeight: FontWeight.bold,
                            ),
                          );
                        } else {
                          return const Text(
                            "加载中...",
                            style: TextStyle(
                                fontSize: 16, fontWeight: FontWeight.bold),
                          );
                        }
                      },
                    ),
                  ],
                )
              ],
            ),
          ),
          IconContainer()
        ],
      );
    });
  }
}