import 'package:cs_resources/constants/color_constants.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/load_state_layout.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/widget_export.dart';

import 'labour_template_item.dart';
import '../labour_template_list/labour_template_list_controller.dart';

import 'package:plugin_basic/base/base_state.dart';
import 'package:plugin_basic/base/base_stateful_page.dart';
import 'package:plugin_basic/utils/ext_get_nav.dart';
import 'package:router/path/router_path.dart';
import 'package:shared/utils/screen_util.dart';
import 'package:widgets/my_appbar.dart';

import '../labour_template_list/labour_template_list_state.dart';

/// 新加坡的模板列表页面
class LabourTemplateListPage extends BaseStatefulPage<LabourTemplateListController> {
  LabourTemplateListPage({Key? key}) : super(key: key);

  //启动当前页面
  static void startInstance() {
    return Get.start(RouterPath.labourTemplateList);
  }

  @override
  LabourTemplateListController createRawController() {
    return LabourTemplateListController();
  }

  @override
  State<LabourTemplateListPage> createState() => _LabourTemplateListState();

}

class _LabourTemplateListState extends BaseState<LabourTemplateListPage, LabourTemplateListController> {

  late LabourTemplateListState state;

  @override
  void initState() {
    super.initState();
    state = controller.state;
  }

  @override
  Widget build(BuildContext context) {
    return autoCtlGetBuilder(builder: (controller) {
      return SafeArea(
        bottom: MediaQuery.of(context).padding.bottom > 38,
        top: false,
        child: Container(
          width: double.infinity,
          height: double.infinity,
          padding: EdgeInsets.only(top: ScreenUtil.getStatusBarH(context)),
          decoration: const BoxDecoration(
            gradient: LinearGradient(
              colors: [
                Color(0xFF091D44),
                Color(0xFF245A8A),
                Color(0xFF7F7CEC),
              ],
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
            ),
          ),
          child: Column(
            children: [
              MyAppBar.searchTitleBar(
                context,
                value: state.keyword,
                hintText: 'Template Name'.tr,
                controller: state.searchController,
                onSearch: (keyword) {
                  controller.doSearch(keyword);
                },
                actions: [
                  //重置按钮
                  MyButton(
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      controller.resetFiltering();
                    },
                    text: "Reset".tr,
                    textColor: ColorConstants.white,
                    backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
                    radius: 17.25,
                    minWidth: 60,
                    minHeight: 35,
                  ).marginOnly(right: 15),
                ],
              ),

              Row(
                children: [
                  MyButton(
                    type: ClickType.throttle,
                    milliseconds: 500,
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      controller.gotoTemplateAddPage();
                    },
                    text: "Add New".tr,
                    textColor: ColorConstants.white,
                    fontSize: 16,
                    radius: 20,
                    backgroundColor: hexToColor("#FFBB1B"),
                    fontWeight: FontWeight.w500,
                  ).expanded(),
                ],
              ).marginOnly(left: 15,right: 15,top: 15,bottom: 10),

              //底部的列表
              EasyRefresh(
                controller: controller.refreshController,
                onRefresh: controller.onRefresh,
                onLoad: controller.loadMore,
                child: LoadStateLayout(
                  state: controller.loadingState,
                  errorMessage: controller.errorMessage,
                  errorRetry: () {
                    controller.retryRequest();
                  },
                  successSliverWidget: [
                    SliverList(
                        delegate: SliverChildBuilderDelegate(
                              (context, index) {
                            return LabourTemplateItem(
                              index: index,
                              item: state.datas[index],
                              onEditAction: () {
                                controller.gotoEditPage(state.datas[index].id.toString());
                              },
                              onDeleteAction: () {
                                controller.deleteJobTitle(index);
                              },
                            );
                          },
                          childCount: state.datas.length,
                        ))
                  ],
                ),
              ).expanded(),
            ],
          ),
        ),
      );
    });
  }
}

