import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Models/commonModels/DistrictsResponse.dart';
import 'package:generp/Models/commonModels/SubLocationsResponse.dart';
import 'package:generp/screens/notifierExports.dart';
import 'package:provider/provider.dart';

import '../../Models/ordersModels/AddOrderViewResponse.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';

class AddorderScreen extends StatefulWidget {
  final pageTitleName;
  final mode;

  const AddorderScreen({super.key, this.pageTitleName, this.mode});

  @override
  State<AddorderScreen> createState() => _AddorderScreenState();
}

class _AddorderScreenState extends State<AddorderScreen> {
  FocusNode focusNode = FocusNode();
  FocusNode focusNodetpc = FocusNode();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      var provider = Provider.of<Addorderprovider>(context, listen: false);
      if (provider.dateNow == null) {
        provider.setDate(DateTime.now());
      }
      provider.getLocationPermission(context);
      provider.getCurrentLocation();
      provider.ordersAddOrderAPIViewFunction(context, widget.mode);
    });
  }

  @override
  void dispose() {
    super.dispose();
  }

  Future<bool> _onBackPressed(BuildContext context) async {
    Navigator.pop(context, true);
    return true;
  }

  @override
  Widget build(BuildContext context) {
    return Consumer<Addorderprovider>(
      builder: (context, provider, child) {
        return WillPopScope(
          child: Scaffold(
            resizeToAvoidBottomInset: true,
            backgroundColor: AppColors.white,
            appBar: appbar2(
              context,
              "${widget.pageTitleName}",
              provider.resetForm,
              SizedBox(width: 0),
            ),
            body: Container(
              padding: EdgeInsets.symmetric(horizontal: 10),
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.circular(20),
              ),
              child: SingleChildScrollView(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    TextWidget(context, "Account"),
                    Container(
                      alignment: Alignment.center,
                      decoration: BoxDecoration(
                        color: AppColors.text_field_color,
                        borderRadius: BorderRadius.circular(14),
                      ),
                      child: ListTile(
                        title: TextFormField(
                          focusNode: focusNode,
                          onTapUpOutside: (event) {
                            focusNode.unfocus();
                          },
                          controller: provider.dropDownSearchController,
                          onChanged: (value) async {
                            Future.delayed(
                              Duration(milliseconds: 100),
                              () async {
                                await provider
                                    .ordersAddOrderSelectAccountAPIFunction(
                                      context,
                                      widget.mode,
                                      provider.selectedAccountID,
                                      value,
                                    );
                              },
                            );
                          },
                          decoration: InputDecoration(
                            enabledBorder: InputBorder.none,
                            focusedBorder: InputBorder.none,
                            isDense: true,
                            contentPadding: const EdgeInsets.symmetric(
                              horizontal: 10,
                              vertical: 8,
                            ),
                            hintText: 'Select Account Type',
                            hintStyle: const TextStyle(fontSize: 12),
                            border: OutlineInputBorder(
                              borderRadius: BorderRadius.circular(8),
                            ),
                          ),
                        ),

                        trailing: InkResponse(
                          onTap: () {
                            if (focusNode.hasFocus) {
                              focusNode.unfocus();
                            } else {
                              FocusScope.of(context).requestFocus(focusNode);
                            }
                          },
                          child: SvgPicture.asset(
                            "assets/svg/arrow_dropdown.svg",
                            height: 25,
                            width: 20,
                          ),
                        ),
                      ),
                    ),
                    if (provider.accountList.isNotEmpty &&
                        focusNode.hasFocus) ...[
                      Card(
                        margin: EdgeInsets.symmetric(horizontal: 0),
                        child: Container(
                          padding: EdgeInsets.symmetric(horizontal: 10),
                          height: 150,
                          decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(16),
                          ),
                          child: Scrollbar(
                            thickness: 2.5,
                            radius: Radius.circular(6),
                            thumbVisibility: true,
                            child: ListView.builder(
                              itemCount: provider.accountList.length,
                              shrinkWrap: true,
                              physics: AlwaysScrollableScrollPhysics(),
                              itemBuilder: (context, index) {
                                return InkResponse(
                                  onTap: () async {
                                    if (provider.accountList.isNotEmpty) {
                                      provider.selectedAccountList =
                                          provider.accountList[index];

                                      print(
                                        "Selected Complaint Type: ${provider.accountList[index].text}, ID: ${provider.accountList[index].id}",
                                      );
                                      provider.selectedAccountID =
                                          provider.accountList[index].id!;
                                      provider.selectedAccountName =
                                          provider.accountList[index].text!;
                                      print(
                                        "hfjkshfg" +
                                            provider.selectedAccountID
                                                .toString(),
                                      );
                                      provider.dropDownSearchController.text =
                                          provider.accountList[index].text!;
                                      provider
                                          .ordersAddOrderAccountDetailsAPIFunction(
                                            context,
                                            provider.selectedAccountID,
                                          );
                                    }
                                    // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
                                    provider.accountList = [];
                                  },
                                  child: SizedBox(
                                    height: 45,
                                    child: Align(
                                      alignment: Alignment.centerLeft,
                                      child: Text(
                                        provider.accountList[index].text!,
                                      ),
                                    ),
                                  ),
                                );
                              },
                            ),
                          ),
                        ),
                      ),
                    ],
                    errorWidget(context, provider.selectAccountError),
                    if (widget.mode == "admin") ...[
                      TextWidget(context, "Sales Person"),
                      DropdownButtonHideUnderline(
                        child: Row(
                          children: [
                            Expanded(
                              child: DropdownButton2<Employees>(
                                isExpanded: true,
                                hint: Text(
                                  "Select Sales Person",
                                  style: TextStyle(fontSize: 14),
                                  overflow: TextOverflow.ellipsis,
                                ),
                                items:
                                    provider.employees
                                        .map(
                                          (e) => DropdownMenuItem<Employees>(
                                            value: e,
                                            child: Text(
                                              e.name!,
                                              style: const TextStyle(
                                                fontSize: 14,
                                              ),
                                            ),
                                          ),
                                        )
                                        .toList(),
                                value: provider.selectedEmployees,
                                onChanged: (Employees? value) {
                                  if (provider.employees.isNotEmpty) {
                                    provider.selectedEmployees = value;
                                    provider.selectedEmployeeID = value!.id!;
                                    provider.selectedEmployeeName =
                                        value!.name!;
                                  }
                                },
                                buttonStyleData: ButtonStyleData(
                                  height: 50,
                                  width: 160,
                                  padding: const EdgeInsets.only(
                                    left: 14,
                                    right: 14,
                                  ),
                                  decoration: BoxDecoration(
                                    borderRadius: BorderRadius.circular(14),
                                    color: AppColors.text_field_color,
                                  ),
                                ),
                                iconStyleData: IconStyleData(
                                  icon: SvgPicture.asset(
                                    "assets/svg/arrow_dropdown.svg",
                                    height: 25,
                                    width: 20,
                                  ),
                                  iconSize: 12,
                                  iconEnabledColor: Color(0xFF2D2D2D),
                                  iconDisabledColor: Colors.grey,
                                ),
                                dropdownStyleData: DropdownStyleData(
                                  maxHeight: 200,
                                  decoration: BoxDecoration(
                                    borderRadius: BorderRadius.circular(14),
                                    color: AppColors.text_field_color,
                                  ),
                                  scrollbarTheme: ScrollbarThemeData(
                                    radius: const Radius.circular(15),
                                    thickness:
                                        MaterialStateProperty.all<double>(6),
                                    thumbVisibility:
                                        MaterialStateProperty.all<bool>(true),
                                  ),
                                ),
                                menuItemStyleData: const MenuItemStyleData(
                                  height: 40,
                                  padding: EdgeInsets.only(left: 14, right: 14),
                                ),
                              ),
                            ),
                          ],
                        ),
                      ),
                    ],
                    TextWidget(context, "Order Received Date"),
                    GestureDetector(
                      onTap: () {
                        provider.showDatePickerDialog(context);
                      },
                      child: Row(
                        crossAxisAlignment: CrossAxisAlignment.center,
                        children: [
                          Expanded(
                            child: Container(
                              height: 50,
                              alignment: Alignment.center,
                              decoration: BoxDecoration(
                                color: AppColors.text_field_color,
                                borderRadius: BorderRadius.circular(14),
                              ),
                              child: Padding(
                                padding: const EdgeInsets.fromLTRB(
                                  10.0,
                                  0.0,
                                  10,
                                  0,
                                ),
                                child: TextFormField(
                                  controller:
                                      provider.orderReceivedDateController,
                                  keyboardType: TextInputType.text,
                                  enabled: false,
                                  maxLines: 1,
                                  readOnly: true,
                                  onChanged: (value) {},
                                  decoration: InputDecoration(
                                    hintText: "Enter Date",
                                    hintStyle: TextStyle(
                                      fontWeight: FontWeight.w400,
                                      color: Color(0xFFB4BEC0),
                                      fontSize: 14,
                                    ),

                                    enabledBorder: InputBorder.none,
                                    disabledBorder: InputBorder.none,
                                    focusedBorder: InputBorder.none,
                                  ),
                                ),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    errorWidget(context, provider.dateError),

                    textControllerWidget(
                      context,
                      provider.billingNameController,
                      "Billing Name",
                      provider.onChangedBillingName,
                      TextInputType.text,
                      false,
                      null,
                    ),
                    errorWidget(context, provider.billingNameError),
                    TextWidget(context, "Billing State"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<States>(
                              isExpanded: true,
                              hint: Text(
                                "Select State",
                                style: TextStyle(fontSize: 14),
                                overflow: TextOverflow.ellipsis,
                              ),
                              items:
                                  provider.billingStates
                                      .map(
                                        (e) => DropdownMenuItem<States>(
                                          value: e,
                                          child: Text(
                                            e.name!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selecetdBillingStates,
                              onChanged: (States? value) {
                                if (provider.billingStates.isNotEmpty) {
                                  provider.selecetdBillingStates = value;
                                  provider.selectedBillingStateID = value!.id!;
                                  provider.selectedBillingStateName =
                                      value!.name!;
                                  if (provider.billingDistricts.isNotEmpty) {
                                    provider.billingDistricts.clear();
                                    provider.selectedBillingDistricts = null;
                                    provider.selectedBillingDistrictId = null;
                                    provider.selectedBillingDistrictValue = "";
                                  }

                                  provider.getDistrictAPI(
                                    context,
                                    provider.selectedBillingStateID,
                                  );
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "Billing District"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<Districts>(
                              isExpanded: true,
                              hint: Text(
                                "Select District",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.billingDistricts
                                      .map(
                                        (e) => DropdownMenuItem<Districts>(
                                          value: e,
                                          child: Text(
                                            e.district!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedBillingDistricts,
                              onChanged: (Districts? value) {
                                if (provider.billingDistricts.isNotEmpty) {
                                  provider.selectedBillingDistricts = value;
                                  provider.selectedBillingDistrictId =
                                      value!.id!;
                                  provider.selectedBillingDistrictValue =
                                      value!.district!;
                                  if (provider.billingSubLocations.isNotEmpty) {
                                    provider.billingSubLocations.clear();
                                    provider.selectedBillingSubLocations = null;
                                    provider.selectedBillingSubLocID = null;
                                    provider.selectedBillingSubLocValue = "";
                                  }
                                  provider.getSubLocationAPI(
                                    context,
                                    provider.selectedBillingDistrictId,
                                  );
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "Billing Sub Location"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<SubLocations>(
                              hint: Text(
                                "Select Sub Locality",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.billingSubLocations
                                      .map(
                                        (e) => DropdownMenuItem<SubLocations>(
                                          value: e,
                                          child: Text(
                                            e.subLocality!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedBillingSubLocations,
                              onChanged: (SubLocations? value) {
                                if (provider.billingSubLocations.isNotEmpty) {
                                  provider.selectedBillingSubLocations = value;
                                  provider.selectedBillingSubLocID = value!.id!;
                                  provider.selectedBillingSubLocValue =
                                      value!.subLocality!;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    textControllerWidget(
                      context,
                      provider.billingAddressController,
                      "Billing Address",
                      provider.onChangedBillingAddress,
                      TextInputType.text,
                      false,
                      null,
                    ),
                    errorWidget(context, provider.billingAddressError),

                    textControllerWidget(
                      context,
                      provider.billingPincodeController,
                      "Billing Pin code",
                      provider.onChangedBillingPincode,
                      TextInputType.number,
                      false,
                      FilteringTextInputFormatter.digitsOnly,
                    ),
                    errorWidget(context, provider.billingPincodeError),

                    TextWidget(context, "Dispatch State"),
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<States>(
                              isExpanded: true,
                              hint: Text(
                                "Select State",
                                style: TextStyle(fontSize: 14),
                                overflow: TextOverflow.ellipsis,
                              ),
                              items:
                                  provider.dispatchStates
                                      .map(
                                        (e) => DropdownMenuItem<States>(
                                          value: e,
                                          child: Text(
                                            e.name!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selecetdDispatchStates,
                              onChanged: (States? value) {
                                if (provider.dispatchStates.isNotEmpty) {
                                  provider.selecetdDispatchStates = value;
                                  provider.selectedDispatchStateID = value!.id!;
                                  provider.selectedDispatchStateName =
                                      value!.name!;
                                  if (provider.dispatchDistricts.isNotEmpty) {
                                    provider.dispatchDistricts.clear();
                                    provider.selectedDispatchDistricts = null;
                                    provider.selectedDispatchDistrictId = null;
                                    provider.selectedDispatchDistrictValue = "";
                                  }
                                  provider.getDispatchDistrictAPI(
                                    context,
                                    provider.selectedDispatchStateID,
                                  );
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    //dd
                    TextWidget(context, "Dispatch District"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<Districts>(
                              isExpanded: true,
                              hint: Text(
                                "Select District",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.dispatchDistricts
                                      .map(
                                        (e) => DropdownMenuItem<Districts>(
                                          value: e,
                                          child: Text(
                                            e.district!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedDispatchDistricts,
                              onChanged: (Districts? value) {
                                if (provider.dispatchDistricts.isNotEmpty) {
                                  provider.selectedDispatchDistricts = value;
                                  provider.selectedDispatchDistrictId =
                                      value!.id!;
                                  provider.selectedDispatchDistrictValue =
                                      value!.district!;
                                  if (provider
                                      .dispatchSubLocations
                                      .isNotEmpty) {
                                    provider.dispatchSubLocations.clear();
                                    provider.selectedDispatchSubLocations =
                                        null;
                                    provider.selectedDispatchSubLocID = null;
                                    provider.selectedDispatchSubLocValue = "";
                                  }
                                  provider.getDispatchSubLocationAPI(
                                    context,
                                    provider.selectedDispatchDistrictId,
                                  );
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "Dispatch Sub Location"),
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<SubLocations>(
                              hint: Text(
                                "Select Sub Locality",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.dispatchSubLocations
                                      .map(
                                        (e) => DropdownMenuItem<SubLocations>(
                                          value: e,
                                          child: Text(
                                            e.subLocality!,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedDispatchSubLocations,
                              onChanged: (SubLocations? value) {
                                if (provider.dispatchSubLocations.isNotEmpty) {
                                  provider.selectedDispatchSubLocations = value;
                                  provider.selectedDispatchSubLocID =
                                      value!.id!;
                                  provider.selectedDispatchSubLocValue =
                                      value!.subLocality!;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    //dd
                    textControllerWidget(
                      context,
                      provider.dispatchAddressController,
                      "Dispatch Address",
                      provider.onChangedDispatchAddress,
                      TextInputType.text,
                      false,
                      null,
                    ),
                    errorWidget(context, provider.dispatchAddressError),

                    textControllerWidget(
                      context,
                      provider.dispatchPincodeController,
                      "Dispatch Pin code",
                      provider.onChangedDispatchPincode,
                      TextInputType.number,
                      false,
                      FilteringTextInputFormatter.digitsOnly,
                    ),
                    errorWidget(context, provider.dispatchPincodeError),

                    textControllerWidget(
                      context,
                      provider.gstController,
                      "GST Number",
                      provider.onChangedGst,
                      TextInputType.number,
                      false,
                      FilteringTextInputFormatter.digitsOnly,
                    ),
                    errorWidget(context, provider.gstError),

                    InkResponse(
                      onTap: () {
                        _showAttachmentSheet(context);
                      },
                      child: Container(
                        margin: EdgeInsets.symmetric(vertical: 10),
                        height: 45,
                        width: MediaQuery.of(context).size.width,
                        decoration: BoxDecoration(
                          color: Color(0xFFE6F6FF),
                          borderRadius: BorderRadius.circular(12),
                          border: Border.all(
                            color: AppColors.app_blue,
                            width: 0.5,
                          ),
                        ),
                        child: Center(
                          child: Text(
                            "Upload Purchase Order",
                            style: TextStyle(
                              fontFamily: "JakartaMedium",
                              color: AppColors.app_blue,
                            ),
                          ),
                        ),
                      ),
                    ),
                    if (provider.imagePicked == 1 &&
                        provider.imagePath != null) ...[
                      Padding(
                        padding: const EdgeInsets.symmetric(vertical: 4.0),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            Text(
                              "${provider.imagePath}",
                              style: TextStyle(
                                color: AppColors.semi_black,
                                fontSize: 11,
                                fontWeight: FontWeight.w600,
                              ),
                            ),
                            InkResponse(
                              onTap: () {
                                provider.imagePicked = 0;
                                provider.imagePath = null;
                                provider.imageFilePath = null;
                              },
                              child: SvgPicture.asset(
                                "assets/svg/ic_close.svg",
                                width: 15,
                                height: 15,
                              ),
                            ),
                          ],
                        ),
                      ),
                    ],

                    TextWidget(context, "Unloading Scope"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<String>(
                              hint: Text(
                                "Select Unloading Scope",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.unloadingScope
                                      .map(
                                        (e) => DropdownMenuItem<String>(
                                          value: e!,
                                          child: Text(
                                            e,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedUnloadingScope,
                              onChanged: (String? value) {
                                if (provider.unloadingScope.isNotEmpty) {
                                  provider.selectedUnloadingScope = value;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "Freight Scope"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<String>(
                              hint: Text(
                                "Select Freight Scope",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.freightScope
                                      .map(
                                        (e) => DropdownMenuItem<String>(
                                          value: e!,
                                          child: Text(
                                            e,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedFreightScope,
                              onChanged: (String? value) {
                                if (provider.freightScope.isNotEmpty) {
                                  provider.selectedFreightScope = value;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "Erection Scope"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<String>(
                              hint: Text(
                                "Select Erection Scope",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.erectionScope
                                      .map(
                                        (e) => DropdownMenuItem<String>(
                                          value: e!,
                                          child: Text(
                                            e,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedErectionScope,
                              onChanged: (String? value) {
                                if (provider.erectionScope.isNotEmpty) {
                                  provider.selectedErectionScope = value;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    TextWidget(context, "TPC Applicable"),
                    //dd
                    DropdownButtonHideUnderline(
                      child: Row(
                        children: [
                          Expanded(
                            child: DropdownButton2<String>(
                              hint: Text(
                                "TPC Applicable",
                                style: const TextStyle(fontSize: 14),
                              ),
                              items:
                                  provider.tpcApplicable
                                      .map(
                                        (e) => DropdownMenuItem<String>(
                                          value: e!,
                                          child: Text(
                                            e,
                                            style: const TextStyle(
                                              fontSize: 14,
                                            ),
                                          ),
                                        ),
                                      )
                                      .toList(),
                              value: provider.selectedTpcStatus,
                              onChanged: (String? value) {
                                if (provider.tpcApplicable.isNotEmpty) {
                                  provider.selectedTpcStatus = value;
                                }
                              },
                              buttonStyleData: ButtonStyleData(
                                height: 50,
                                width: 160,
                                padding: const EdgeInsets.only(
                                  left: 14,
                                  right: 14,
                                ),
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                              ),
                              iconStyleData: IconStyleData(
                                icon: SvgPicture.asset(
                                  "assets/svg/arrow_dropdown.svg",
                                  height: 25,
                                  width: 20,
                                ),
                                iconSize: 12,
                                iconEnabledColor: Color(0xFF2D2D2D),
                                iconDisabledColor: Colors.grey,
                              ),
                              dropdownStyleData: DropdownStyleData(
                                maxHeight: 200,
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(14),
                                  color: AppColors.text_field_color,
                                ),
                                scrollbarTheme: ScrollbarThemeData(
                                  radius: const Radius.circular(15),
                                  thickness: MaterialStateProperty.all<double>(
                                    6,
                                  ),
                                  thumbVisibility:
                                      MaterialStateProperty.all<bool>(true),
                                ),
                              ),
                              menuItemStyleData: const MenuItemStyleData(
                                height: 40,
                                padding: EdgeInsets.only(left: 14, right: 14),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),

                    if (provider.selectedTpcStatus == "Yes") ...[
                      TextWidget(context, "TPC Agent"),

                      //dd
                      Container(
                        alignment: Alignment.center,
                        decoration: BoxDecoration(
                          color: AppColors.text_field_color,
                          borderRadius: BorderRadius.circular(14),
                        ),
                        child: ListTile(
                          title: TextFormField(
                            focusNode: focusNodetpc,
                            onTapUpOutside: (event) {
                              focusNodetpc.unfocus();
                            },
                            controller: provider.dropDownTpcSearchController,
                            onChanged: (value) async {
                              Future.delayed(
                                Duration(milliseconds: 100),
                                () async {
                                  await provider.ordersAddOrderTPCAgentFunction(
                                    context,
                                    widget.mode,
                                    value,
                                  );
                                },
                              );
                            },
                            decoration: InputDecoration(
                              enabledBorder: InputBorder.none,
                              focusedBorder: InputBorder.none,
                              isDense: true,
                              contentPadding: const EdgeInsets.symmetric(
                                horizontal: 10,
                                vertical: 8,
                              ),
                              hintText: 'Select TPC Agent',
                              hintStyle: const TextStyle(fontSize: 12),
                              border: OutlineInputBorder(
                                borderRadius: BorderRadius.circular(8),
                              ),
                            ),
                          ),

                          trailing: InkResponse(
                            onTap: () {
                              if (focusNodetpc.hasFocus) {
                                focusNodetpc.unfocus();
                              } else {
                                FocusScope.of(
                                  context,
                                ).requestFocus(focusNodetpc);
                              }
                            },
                            child: SvgPicture.asset(
                              "assets/svg/arrow_dropdown.svg",
                              height: 25,
                              width: 20,
                            ),
                          ),
                        ),
                      ),
                      if (provider.tpcAgent.isNotEmpty &&
                          focusNodetpc.hasFocus) ...[
                        Card(
                          margin: EdgeInsets.symmetric(horizontal: 0),
                          child: Container(
                            padding: EdgeInsets.symmetric(horizontal: 10),
                            height: 150,
                            decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(16),
                            ),
                            child: Scrollbar(
                              thickness: 2.5,
                              radius: Radius.circular(6),
                              thumbVisibility: true,
                              child: ListView.builder(
                                itemCount: provider.tpcAgent.length,
                                shrinkWrap: true,
                                physics: AlwaysScrollableScrollPhysics(),
                                itemBuilder: (context, index) {
                                  return InkResponse(
                                    onTap: () async {
                                      if (provider.tpcAgent.isNotEmpty) {
                                        provider.selectedTpcAgent =
                                            provider.tpcAgent[index];

                                        print(
                                          "Selected Complaint Type: ${provider.tpcAgent[index].text}, ID: ${provider.tpcAgent[index].id}",
                                        );
                                        provider.selectedTpcAgentID =
                                            provider.tpcAgent[index].id!;
                                        provider.selectedTpcAgentValue =
                                            provider.tpcAgent[index].text!;
                                        print(
                                          "hfjkshfg" +
                                              provider.selectedTpcAgentID
                                                  .toString(),
                                        );
                                        provider.dropDownSearchController.text =
                                            provider.accountList[index].text!;
                                      }
                                      // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
                                      // provider.tpcAgent = [];
                                    },
                                    child: SizedBox(
                                      height: 45,
                                      child: Align(
                                        alignment: Alignment.centerLeft,
                                        child: Text(
                                          provider.tpcAgent[index].text!,
                                        ),
                                      ),
                                    ),
                                  );
                                },
                              ),
                            ),
                          ),
                        ),
                      ],

                      textControllerWidget(
                        context,
                        provider.tpcAmountController,
                        "TPC Amount",
                        provider.onChangeTpcAmount,
                        TextInputType.number,
                        false,
                        FilteringTextInputFormatter.digitsOnly,
                      ),
                      errorWidget(context, provider.tpcAmountError),
                    ],

                    ///Addorderbutton
                    OrderForm(),
                    //dd
                  ],
                ),
              ),
            ),
            floatingActionButtonLocation:
                FloatingActionButtonLocation.centerFloat,
            bottomNavigationBar: InkResponse(
              onTap:
                  provider.submitClicked
                      ? null
                      : () {
                        provider.submitClicked = true;
                        var order_prod_data = provider.getFormData();
                        print(order_prod_data);
                        provider.getCurrentLocation();
                        provider.ordersAddOrderAPISubmitFunction(
                          context,
                          widget.mode,
                          provider.selectedEmployeeID,
                          provider.selectedAccountID,
                          provider.selectedDispatchDistrictId,
                          provider.selectedDispatchSubLocID,
                          provider.selectedUnloadingScope,
                          provider.selectedFreightScope,
                          provider.selectedErectionScope,
                          provider.selectedTpcStatus,
                          provider.selectedTpcStatus,
                          provider.selectedBillingStateID,
                          provider.selectedBillingDistrictId,
                          provider.selectedBillingSubLocID,
                          provider.selectedTpcAgentID,
                          order_prod_data,
                        );
                      },
              child: Container(
                height: 45,
                alignment: Alignment.center,
                margin: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
                padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
                decoration: BoxDecoration(
                  color: AppColors.app_blue,
                  borderRadius: BorderRadius.circular(15),
                ),
                child:
                    provider.submitClicked
                        ? CircularProgressIndicator.adaptive(
                          valueColor: AlwaysStoppedAnimation<Color>(
                            AppColors.app_blue,
                          ),
                        )
                        : Text(
                          "Submit",
                          style: TextStyle(
                            fontSize: 15,
                            fontFamily: "JakartaMedium",
                            color: Colors.white,
                          ),
                        ),
              ),
            ),
          ),
          onWillPop: () async {
            provider.resetForm();
            return _onBackPressed(context);
          },
        );
      },
    );
  }

  Future<void> _showAttachmentSheet(BuildContext context) {
    return showModalBottomSheet(
      useSafeArea: true,
      isDismissible: true,
      isScrollControlled: true,
      showDragHandle: true,
      backgroundColor: Colors.white,
      enableDrag: true,
      context: context,
      builder: (context) {
        return StatefulBuilder(
          builder: (context, setState) {
            return SafeArea(
              child: Consumer<Addorderprovider>(
                builder: (context, provider, child) {
                  return Padding(
                    padding: EdgeInsets.only(
                      bottom:
                          MediaQuery.of(
                            context,
                          ).viewInsets.bottom, // This handles keyboard
                    ),
                    child: Container(
                      margin: EdgeInsets.only(
                        bottom: 15,
                        left: 15,
                        right: 15,
                        top: 10,
                      ),

                      child: SingleChildScrollView(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          mainAxisSize: MainAxisSize.min,
                          children: [
                            Align(
                              alignment: Alignment.center,
                              child: Text(
                                "Select Source",
                                style: TextStyle(
                                  color: AppColors.app_blue,
                                  fontFamily: "JakrtaMedium",
                                  fontSize: 16,
                                ),
                              ),
                            ),
                            SizedBox(height: 15),
                            InkWell(
                              onTap: () {
                                Navigator.of(context).pop(false);
                                provider.imgFromGallery(context);
                              },
                              child: Container(
                                height: 35,
                                child: Text("Select photo from gallery"),
                              ),
                            ),
                            SizedBox(height: 10),
                            InkWell(
                              onTap: () {
                                Navigator.of(context).pop(false);
                                provider.imgFromCamera(context);
                              },
                              child: Container(
                                height: 35,
                                child: Text("Capture photo from camera"),
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),
                  );
                },
              ),
            );
          },
        );
      },
    );
  }
}

class OrderForm extends StatelessWidget {
  const OrderForm({super.key});

  @override
  Widget build(BuildContext context) {
    final provider = Provider.of<Addorderprovider>(context);

    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 10),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(20),
      ),
      child: SingleChildScrollView(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const SizedBox(height: 10),
            // Add Product Button
            InkWell(
              onTap: provider.addNewRow,
              child: Container(
                margin: const EdgeInsets.symmetric(vertical: 10),
                height: 45,
                width: double.infinity,
                decoration: BoxDecoration(
                  color: const Color(0xFFE6F6FF),
                  borderRadius: BorderRadius.circular(12),
                  border: Border.all(color: Colors.blue, width: 0.5),
                ),
                child: const Center(
                  child: Text(
                    "+ Add Product",
                    style: TextStyle(
                      fontFamily: "JakartaMedium",
                      color: Colors.blue,
                      fontSize: 16,
                    ),
                  ),
                ),
              ),
            ),
            // Product Rows (Horizontal ListView)
            if (provider.ProductControllers.isNotEmpty) ...[
              ListView.builder(
                shrinkWrap: true,
                itemCount: provider.ProductControllers.length,
                itemBuilder: (context, index) {
                  return Container(
                    width: MediaQuery.of(context).size.width,

                    padding: const EdgeInsets.all(5.0),
                    decoration: BoxDecoration(
                      color: const Color(0xFFF5F5F5),
                      borderRadius: BorderRadius.circular(12),
                    ),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(
                          "Product ${index + 1}",
                          style: const TextStyle(
                            fontSize: 16,
                            fontWeight: FontWeight.bold,
                          ),
                        ),
                        const SizedBox(height: 8.0),
                        Container(
                          padding: const EdgeInsets.all(3.0),
                          decoration: BoxDecoration(
                            color: Colors.white,
                            borderRadius: BorderRadius.circular(12),
                          ),
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              // Product Dropdown
                              Row(
                                children: [
                                  Expanded(
                                    child: DropdownButtonHideUnderline(
                                      child: DropdownButton2<SaleProducts>(
                                        isExpanded: true,
                                        hint: Text(
                                          'Select Product',
                                          style: TextStyle(fontSize: 14),
                                          overflow: TextOverflow.ellipsis,
                                        ),
                                        items:
                                            provider.saleProducts
                                                .map(
                                                  (ord) => DropdownMenuItem<
                                                    SaleProducts
                                                  >(
                                                    value: ord,
                                                    child: Text(
                                                      "${ord.prodName}" ?? '',
                                                      style: const TextStyle(
                                                        fontSize: 14,
                                                      ),
                                                      overflow:
                                                          TextOverflow.ellipsis,
                                                    ),
                                                  ),
                                                )
                                                .toList(),
                                        value: provider.saleProducts.firstWhere(
                                              (product) => product.id == provider.selectedSaleProductID[index],
                                        ),
                                        onChanged: (SaleProducts? value) {
                                          if (value != null) {
                                            if (provider
                                                .saleProducts
                                                .isNotEmpty) {
                                              provider.selectedSaleProducts =
                                                  value;

                                              provider.updateSelectedProduct(
                                                index,
                                                provider.selectedSaleProducts,
                                              );
                                              // provider.selectedOrderIds = value!.orderId!;
                                              // provider.selectedOrderNumbers = value!.orderNumber!;
                                            }
                                          }
                                        },
                                        buttonStyleData: ButtonStyleData(
                                          height: 50,
                                          width: 160,
                                          padding: const EdgeInsets.only(
                                            left: 14,
                                            right: 14,
                                          ),
                                          decoration: BoxDecoration(
                                            borderRadius: BorderRadius.circular(
                                              14,
                                            ),
                                            color: AppColors.text_field_color,
                                          ),
                                        ),
                                        iconStyleData: IconStyleData(
                                          icon: SvgPicture.asset(
                                            "assets/svg/arrow_dropdown.svg",
                                            height: 25,
                                            width: 20,
                                          ),
                                          iconSize: 12,
                                          iconEnabledColor: Color(0xFF2D2D2D),
                                          iconDisabledColor: Colors.grey,
                                        ),
                                        dropdownStyleData: DropdownStyleData(
                                          maxHeight: 200,
                                          decoration: BoxDecoration(
                                            borderRadius: BorderRadius.circular(
                                              14,
                                            ),
                                            color: AppColors.text_field_color,
                                          ),
                                          scrollbarTheme: ScrollbarThemeData(
                                            radius: const Radius.circular(15),
                                            thickness:
                                                MaterialStateProperty.all<
                                                  double
                                                >(6),
                                            thumbVisibility:
                                                MaterialStateProperty.all<bool>(
                                                  true,
                                                ),
                                          ),
                                        ),
                                        menuItemStyleData:
                                            const MenuItemStyleData(
                                              height: 40,
                                              padding: EdgeInsets.only(
                                                left: 14,
                                                right: 14,
                                              ),
                                            ),
                                      ),
                                    ),
                                  ),
                                ],
                              ),

                              const SizedBox(height: 8.0),
                              Row(
                                children: [
                                  // Price TextField (Read-only)
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.PriceControllers[index],
                                      "Price",
                                      (p0) {},
                                      TextInputType.number,
                                      false,
                                      FilteringTextInputFormatter.digitsOnly,
                                    ),
                                  ),
                                  const SizedBox(width: 8.0),
                                  // Quantity TextField
                                  // Expanded(
                                  //   child: TextField(
                                  //     controller:
                                  //     provider.QuantityControllers[index],
                                  //     decoration: const InputDecoration(
                                  //       labelText: 'Quantity',
                                  //       border: OutlineInputBorder(),
                                  //       isDense: true,
                                  //     ),
                                  //     keyboardType: TextInputType.number,
                                  //     inputFormatters: [
                                  //       FilteringTextInputFormatter.digitsOnly
                                  //     ],
                                  //     onChanged: (value) {
                                  //
                                  //     },
                                  //   ),
                                  // ),
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.QuantityControllers[index],
                                      "Quantity",
                                      (p0) {
                                        provider.updateRowCalculations(index);
                                      },
                                      TextInputType.number,
                                      false,
                                      FilteringTextInputFormatter.digitsOnly,
                                    ),
                                  ),
                                ],
                              ),
                              const SizedBox(height: 8.0),
                              Row(
                                children: [
                                  // CGST TextField
                                  // Expanded(
                                  //   child: TextField(
                                  //     controller: provider.CGSTControllers[index],
                                  //     decoration: const InputDecoration(
                                  //       labelText: 'CGST %',
                                  //       border: OutlineInputBorder(),
                                  //       isDense: true,
                                  //     ),
                                  //     keyboardType: TextInputType.number,
                                  //     inputFormatters: [
                                  //       FilteringTextInputFormatter.digitsOnly
                                  //     ],
                                  //     onChanged: (value) {
                                  //       provider.updateRowCalculations(index);
                                  //     },
                                  //   ),
                                  // ),
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.CGSTControllers[index],
                                      "CGST %",
                                      (p0) {
                                        provider.updateRowCalculations(index);
                                      },
                                      TextInputType.number,
                                      false,
                                      FilteringTextInputFormatter.digitsOnly,
                                    ),
                                  ),
                                  const SizedBox(width: 8.0),
                                  // SGST TextField
                                  // Expanded(
                                  //   child: TextField(
                                  //     controller: provider.SGSTControllers[index],
                                  //     decoration: const InputDecoration(
                                  //       labelText: 'SGST %',
                                  //       border: OutlineInputBorder(),
                                  //       isDense: true,
                                  //     ),
                                  //     keyboardType: TextInputType.number,
                                  //     inputFormatters: [
                                  //       FilteringTextInputFormatter.digitsOnly
                                  //     ],
                                  //     onChanged: (value) {
                                  //       provider.updateRowCalculations(index);
                                  //     },
                                  //   ),
                                  // ),
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.SGSTControllers[index],
                                      "SGST %",
                                      (p0) {
                                        provider.updateRowCalculations(index);
                                      },
                                      TextInputType.number,
                                      false,
                                      FilteringTextInputFormatter.digitsOnly,
                                    ),
                                  ),
                                  const SizedBox(width: 8.0),
                                  // IGST TextField
                                  // Expanded(
                                  //   child: TextField(
                                  //     controller: provider.IGSTControllers[index],
                                  //     decoration: const InputDecoration(
                                  //       labelText: 'IGST %',
                                  //       border: OutlineInputBorder(),
                                  //       isDense: true,
                                  //     ),
                                  //     keyboardType: TextInputType.number,
                                  //     inputFormatters: [
                                  //       FilteringTextInputFormatter.digitsOnly
                                  //     ],
                                  //     onChanged: (value) {
                                  //       provider.updateRowCalculations(index);
                                  //     },
                                  //   ),
                                  // ),
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.IGSTControllers[index],
                                      "IGST %",
                                      (p0) {
                                        provider.updateRowCalculations(index);
                                      },
                                      TextInputType.number,
                                      false,
                                      FilteringTextInputFormatter.digitsOnly,
                                    ),
                                  ),
                                ],
                              ),
                              const SizedBox(height: 8.0),
                              Row(
                                children: [
                                  // Total Price TextField (Read-only)
                                  // Expanded(
                                  //   child: TextField(
                                  //     controller:
                                  //     provider.TaxableValueControllers[index],
                                  //     decoration: const InputDecoration(
                                  //       labelText: 'Total Price',
                                  //       border: OutlineInputBorder(),
                                  //       isDense: true,
                                  //     ),
                                  //     keyboardType: TextInputType.number,
                                  //     readOnly: true,
                                  //   ),
                                  // ),
                                  Expanded(
                                    child: textControllerWidget(
                                      context,
                                      provider.TaxableValueControllers[index],
                                      "Total Price",
                                      (p0) {
                                        provider.updateRowCalculations(index);
                                      },
                                      TextInputType.number,
                                      true,
                                      null,
                                    ),
                                  ),
                                  // const SizedBox(width: 8.0),
                                  // // Remove Row Button
                                  // IconButton(
                                  //   icon: const Icon(Icons.delete, color: Colors.red),
                                  //   onPressed: () {
                                  //     provider.removeRow(index);
                                  //   },
                                  // ),
                                ],
                              ),
                            ],
                          ),
                        ),
                      ],
                    ),
                  );
                },
              ),
            ],
            const SizedBox(height: 20),

            Container(
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.circular(12),
              ),
              child: Column(
                children: [
                  textControllerWidget(
                    context,
                    provider.basicAmountReadOnlyController,
                    "Basic Amount",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                  textControllerWidget(
                    context,
                    provider.cgstReadOnlyController,
                    "CGST Amount",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                  textControllerWidget(
                    context,
                    provider.sgstReadOnlyController,
                    "SGST Amount",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                  textControllerWidget(
                    context,
                    provider.igstReadOnlyController,
                    "IGST Amount",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                  textControllerWidget(
                    context,
                    provider.totalReadOnlyAmountController,
                    "Total Amount",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                  textControllerWidget(
                    context,
                    provider.noteController,
                    "Note",
                    (p0) {},
                    TextInputType.text,
                    true,
                    FilteringTextInputFormatter.digitsOnly,
                  ),
                ],
              ),
            ),
            // Summary Table
            Visibility(
              visible: false,
              child: Table(
                border: TableBorder.all(color: Colors.grey, width: 1),
                columnWidths: const {
                  0: FlexColumnWidth(2),
                  1: FlexColumnWidth(1),
                },
                children: [
                  _buildTableRow(
                    'Basic Amount',
                    provider.basicAmount.toStringAsFixed(2),
                  ),
                  _buildTableRow(
                    'CGST Amount',
                    provider.cgstAmount.toStringAsFixed(2),
                  ),
                  _buildTableRow(
                    'SGST Amount',
                    provider.sgstAmount.toStringAsFixed(2),
                  ),
                  _buildTableRow(
                    'IGST Amount',
                    provider.igstAmount.toStringAsFixed(2),
                  ),
                  _buildTableRow(
                    'Total Amount',
                    provider.totalAmount.toStringAsFixed(2),
                  ),
                  TableRow(
                    children: [
                      const Padding(
                        padding: EdgeInsets.all(8.0),
                        child: Text(
                          'Note',
                          style: TextStyle(fontWeight: FontWeight.bold),
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: TextField(
                          controller: provider.noteController,
                          decoration: const InputDecoration(
                            border: InputBorder.none,
                            hintText: 'Enter note',
                          ),
                          maxLines: null,
                        ),
                      ),
                    ],
                  ),
                ],
              ),
            ),
            const SizedBox(height: 20),

            // Submit Button
          ],
        ),
      ),
    );
  }

  TableRow _buildTableRow(String label, value) {
    return TableRow(
      children: [
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text(
            label,
            style: const TextStyle(fontWeight: FontWeight.bold),
          ),
        ),
        Padding(padding: const EdgeInsets.all(8.0), child: Text(value.toString())),
      ],
    );
  }
}


