import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:healthcare_pharmacy/ZoomedImageView.dart';
import 'package:healthcare_pharmacy/models/offersview_model.dart';
import 'package:healthcare_pharmacy/offerstabdata.dart';
import 'package:healthcare_pharmacy/settings.dart';
import 'package:intl/intl.dart';
import 'package:image_picker/image_picker.dart';
import 'package:photo_view/photo_view.dart';

import 'package:flutter_cupertino_datetime_picker/flutter_cupertino_datetime_picker.dart';



class Viewpager extends StatefulWidget {
  List<GetOffersDetailsModel> userdata;
  int position;
  Viewpager(this.userdata, this.position);

  @override
  State<Viewpager> createState() => _ViewpagerState();
}

class _ViewpagerState extends State<Viewpager> {
  late PageController _pageController;
  int _currentPageIndex = 0;
  String selectedOption = 'Option 1';
  bool isActiveDataLoading=false;
  bool isSereverIssue = false;
  bool isSereverIssueConnected = false;
  bool isSereverIssuePending = false;

  bool switchValue = false;
  TextEditingController updateOfferNameController = TextEditingController();
  TextEditingController updateOfferCodeController = TextEditingController();
  TextEditingController updateOfferDescriptionController = TextEditingController();
  TextEditingController updateDiscountController = TextEditingController();
  TextEditingController updateOfferStartDateController = TextEditingController();
  TextEditingController updateOfferEndDateController = TextEditingController();
  String dropdownTypeOfCategory = 'A {1 - 500}';
  var typeOfCategoryItems = [
    'A {1 - 500}',
    'B {501 - 1000}',
    'C {1001 - 2000}',
    'D {Above 2000}',
    'S {Special offer}',
  ];

  List updateCategoryTypes = [];

  var startdate;
  var enddate;
  String updateofferUrl='';

  final ImagePicker _picker = ImagePicker();
  List<GetOffersDetailsModel> activeOffersList = [];


  Future pickImageFromGallery(var offerCode) async {

    try {
      final image = await _picker.pickImage(source: ImageSource.gallery);
      if (image == null) return '';

      final imageTemp = File(image.path);
      AppSettings.preLoaderDialog(context);
      var res = await AppSettings.offerupdateuploadImageHTTPNew(image, offerCode);
      print(jsonDecode(res));

      setState(() {
        updateofferUrl = jsonDecode(res)['picture'][0]['url'];
        print("update url: $updateofferUrl");
      });

      Navigator.of(context, rootNavigator: true).pop();
      if(res.contains("error")){
        return 'some thing went wrong please try again';
      }
      else{
        return jsonDecode(res)['picture'][0]['url'];
      }

    } on PlatformException catch (e) {
      print('Failed to pick image: $e');
      return 'some thing went wrong please try again';
    }
  }

  Future<String> takeImageFromCamera(String offerCode) async {
    try {
      final image = await _picker.pickImage(source: ImageSource.camera);
      if (image == null) return '';

      final imageTemp = File(image.path);
      AppSettings.preLoaderDialog(context);
      var res = await AppSettings.offerupdateuploadImageHTTPNew(image, offerCode);
      print(jsonDecode(res));

      setState(() {
        updateofferUrl = jsonDecode(res)['picture'][0]['url'];
        print("update url: $updateofferUrl");
      });

      Navigator.of(context, rootNavigator: true).pop();
      if(res.contains("error")){
        return 'some thing went wrong please try again';
      }
      else{
        return jsonDecode(res)['picture'][0]['url'];
      }

    } on PlatformException catch (e) {
      print('Failed to pick image: $e');
      return 'some thing went wrong please try again';
    }

  }




  showUpdateOfferDialog(GetOffersDetailsModel object, int index) async {
    updateOfferNameController.text = object.offer_name!;
    updateOfferCodeController.text = object.offer_code!;
    updateOfferDescriptionController.text = object.description!;
    updateOfferStartDateController.text=object.starting_date!;
    updateOfferEndDateController.text=object.ending_date!;
    updateofferUrl=object.picture[0].url;
    return showDialog(
      context: context,
      barrierDismissible: false,
      builder: (BuildContext context) {
        return StatefulBuilder(
          builder: (BuildContext context, StateSetter setState) {
            var data=activeOffersList[index];
            print("result$updateofferUrl");
            return AlertDialog(
              title: const Text('Update Offer'),
              content: SingleChildScrollView(
                child: ListBody(
                  children: <Widget>[
                    // ImageView
                    InkWell(
                      onTap: () {
                        showModalBottomSheet<void>(
                            context: context,
                            builder: (BuildContext context) {
                              return SizedBox(
                                height: 200,
                                child: Center(
                                  child: Row(
                                    mainAxisAlignment: MainAxisAlignment.center,
                                    children: <Widget>[
                                      GestureDetector(
                                        child: Icon(
                                          Icons.camera_alt_outlined,
                                          size: 100,
                                          color: primaryColor,
                                        ),
                                        onTap: () async {
                                          await takeImageFromCamera(object.offer_code!).then((value) {
                                            print("datatatttta$value");
                                            setState(() {
                                              updateofferUrl = value;
                                              // print(updateofferUrl);
                                            });
                                          });
                                          Navigator.pop(context);
                                        },
                                      ),
                                      SizedBox(
                                        width:
                                        MediaQuery.of(context).size.width * .20,
                                      ),
                                      GestureDetector(
                                        child: Icon(
                                          Icons.photo,
                                          size: 100,
                                          color: primaryColor,
                                        ),
                                        onTap: () async {
                                          await pickImageFromGallery(object.offer_code).then((value) {
                                            print("datatatttta$value");
                                            setState(() {
                                              updateofferUrl = value;
                                              // print(updateofferUrl);
                                            });
                                          });;
                                          Navigator.pop(context);
                                        },
                                      ),
                                    ],
                                  ),
                                ),
                              );
                            });
                      },
                      child: Container(
                        width: MediaQuery.of(context).size.width,
                        height: 150,
                        child: updateofferUrl.isEmpty
                            ? Image.network(
                          "https://assets.aboutamazon.com/dims4/default/1db03c8/2147483647/strip/false/crop/2000x1125+0+0/resize/1200x675!/quality/90/?url=https%3A%2F%2Famazon-blogs-brightspot.s3.amazonaws.com%2Fa3%2Fc2%2F5c0b93db41d789be1bec015003bd%2Fpharmacy-hero-2000x1125.jpg",
                          fit: BoxFit.cover,
                        )
                            : Image.network(
                          updateofferUrl,
                          fit: BoxFit.cover,
                        ),
                      ),


                    ),
                    const SizedBox(
                      height: 20,
                    ),

                    // Offer Name
                    Container(
                      padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
                      child: TextFormField(
                        cursorColor: greyColor,
                        controller: updateOfferNameController,
                        textCapitalization: TextCapitalization.words,
                        decoration: const InputDecoration(
                          prefixIcon: Icon(
                            Icons.person,
                            color: primaryColor,
                          ),
                          border: OutlineInputBorder(
                              borderSide: BorderSide(color: greyColor)),
                          focusedBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          labelText: 'Offer name',
                          labelStyle: TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                        ),
                      ), //tanker name
                    ),
                    const SizedBox(
                      height: 20,
                    ),

                    Container(
                      //padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
                      child: TextFormField(
                        cursorColor: greyColor,
                        controller: updateOfferCodeController,
                        textCapitalization: TextCapitalization.words,
                        decoration: const InputDecoration(
                          prefixIcon: Icon(
                            Icons.numbers,
                            color: primaryColor,
                          ),
                          border: OutlineInputBorder(
                              borderSide: BorderSide(color: greyColor)),
                          focusedBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          labelText: 'Offer Code',
                          labelStyle: TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                        ),
                      ), //tanker name
                    ),
                    const SizedBox(
                      height: 20,
                    ),
                    Container(
                      //padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
                      child: TextFormField(
                        cursorColor: greyColor,
                        controller: updateOfferDescriptionController,
                        textCapitalization: TextCapitalization.words,
                        decoration: const InputDecoration(
                          prefixIcon: Icon(
                            Icons.description,
                            color: primaryColor,
                          ),
                          border: OutlineInputBorder(
                              borderSide: BorderSide(color: greyColor)),
                          focusedBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          labelText: 'Offer Description',
                          labelStyle: TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                        ),
                      ), //tanker name
                    ),



                    const SizedBox(
                      height: 30,
                    ),


                    Container(
                      child: DropdownButtonFormField(
                        // Initial Value
                        value: dropdownTypeOfCategory,
                        isExpanded: true,
                        decoration: const InputDecoration(
                          prefixIcon: Icon(
                            Icons.type_specimen,
                            color: primaryColor,
                          ),
                          border: OutlineInputBorder(
                              borderSide: BorderSide(color: greyColor)),
                          focusedBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(color: greyColor),
                          ),
                          labelText: 'Type of category',
                          labelStyle: TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                        ),

                        hint: Text('Select Type of category'),
                        // Down Arrow Icon
                        icon: const Icon(Icons.keyboard_arrow_down),

                        // Array list of items
                        items: typeOfCategoryItems.map((String items) {
                          return DropdownMenuItem(
                            value: items,
                            child: Text(items),
                          );
                        }).toList(),
                        // After selecting the desired option,it will
                        // change button value to selected value
                        onChanged: (String? newValue) {
                          setState(() {
                            dropdownTypeOfCategory = newValue!;
                          });
                        },
                      ),
                    ),




                    const SizedBox(
                      height: 20,
                    ),
                    Container(
                      child: TextFormField(
                        readOnly: true,
                        cursorColor: greyColor,
                        controller: updateOfferStartDateController,
                        decoration: InputDecoration(
                          labelText: 'Select Start Date',
                          prefixIcon: IconButton(
                            icon:  Icon(
                              Icons.date_range,
                              color: primaryColor,
                            ),
                            onPressed: () async {
                              DatePicker.showDatePicker(
                                context,
                                dateFormat: 'dd MMMM yyyy',
                                initialDateTime: DateTime.now(),
                                minDateTime:DateTime.now(),
                                maxDateTime: DateTime.now().add(Duration(days: 365)),
                                onMonthChangeStartWithFirstDate: true,
                                pickerMode: DateTimePickerMode.datetime,
                                pickerTheme: DateTimePickerTheme(
                                  // backgroundColor: Colors.white,
                                  cancelTextStyle: labelTextStyle(),
                                  confirmTextStyle: labelTextStyle(),
                                  // showTitle: true,
                                  //title: Text('Pick date and time'),
                                  itemTextStyle: valuesTextStyle(),
                                ),
                                onConfirm: (dateTime, List<int> index)async {
                                  DateTime selectdate = dateTime;
                                  setState(() {
                                    startdate = DateFormat('dd-MMM-yyyy').format(selectdate);
                                  });

                                  if(startdate!=''){
                                    setState(() {
                                      updateOfferStartDateController.text=startdate.toString();
                                    });
                                  }
                                  else {
                                    AppSettings.longFailedToast('Select start date');
                                  }
                                },
                              );
                            },
                          ),

                          labelStyle: const TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                          border: const OutlineInputBorder(
                              borderSide: BorderSide(color: primaryColor)),
                          focusedBorder: const OutlineInputBorder(
                            borderSide: BorderSide(color: primaryColor),
                          ),
                          enabledBorder: const OutlineInputBorder(
                            borderSide: BorderSide(color: primaryColor),
                          ),

                        ),

                      ),
                    ),

                    const SizedBox(
                      height: 20,
                    ),
                    Container(
                      child: TextFormField(
                        readOnly: true,
                        cursorColor: greyColor,
                        controller: updateOfferEndDateController,
                        decoration: InputDecoration(
                          labelText: 'Select end Date',
                          prefixIcon: IconButton(
                            icon:  Icon(
                              Icons.date_range,
                              color: primaryColor,
                            ),
                            onPressed: () async {
                              DatePicker.showDatePicker(
                                context,
                                dateFormat: 'dd MMMM yyyy',
                                initialDateTime: DateTime.now(),
                                minDateTime:DateTime.now(),
                                maxDateTime: DateTime.now().add(Duration(days: 365)),
                                onMonthChangeStartWithFirstDate: true,
                                pickerMode: DateTimePickerMode.datetime,
                                pickerTheme: DateTimePickerTheme(
                                  // backgroundColor: Colors.white,
                                  cancelTextStyle: labelTextStyle(),
                                  confirmTextStyle: labelTextStyle(),
                                  // showTitle: true,
                                  //title: Text('Pick date and time'),
                                  itemTextStyle: valuesTextStyle(),
                                ),
                                onConfirm: (dateTime, List<int> index)async {
                                  DateTime selectdate = dateTime;
                                  setState(() {
                                    enddate = DateFormat('dd-MMM-yyyy').format(selectdate);
                                  });

                                  if(enddate!=''){
                                    setState(() {
                                      updateOfferEndDateController.text=enddate.toString();
                                    });
                                  }
                                  else {
                                    AppSettings.longFailedToast('Select end date');
                                  }
                                },
                              );
                            },
                          ),

                          labelStyle: const TextStyle(
                            color: greyColor, //<-- SEE HERE
                          ),
                          border: const OutlineInputBorder(
                              borderSide: BorderSide(color: primaryColor)),
                          focusedBorder: const OutlineInputBorder(
                            borderSide: BorderSide(color: primaryColor),
                          ),
                          enabledBorder: const OutlineInputBorder(
                            borderSide: BorderSide(color: primaryColor),
                          ),
                        ),

                      ),
                    ),//address description

                    const SizedBox(
                      height: 30,
                    ),

                  ],
                ),
              ),
              actions: <Widget>[
                TextButton(
                  child: Text('Cancel', style: textButtonStyle()),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
                TextButton(
                  child: Text('Update', style: textButtonStyle()),
                  onPressed: () async {
                    if (updateOfferNameController.text != '' ) {
                      AppSettings.preLoaderDialog(context);

                      Map<String, dynamic> payload = {
                        "offer_name": updateOfferNameController.text.toString(),
                        "offer_code": updateOfferCodeController.text.toString(),
                        "description":updateOfferDescriptionController.text.toString(),
                        "category":dropdownTypeOfCategory.toString(),
                        "starting_date":updateOfferStartDateController.text.toString(),
                        "ending_date": updateOfferEndDateController.text.toString(),
                        "picture": [
                          {
                            "url":updateofferUrl
                          }
                        ],
                        "offer_status": "active",
                      };

                      bool offerStatus = await AppSettings.updateOffers(object.offer_code, payload);
                      try {
                        if (offerStatus) {
                          Navigator.of(context, rootNavigator: true).pop();
                          AppSettings.longSuccessToast(
                              "Offer Updated Successfully");
                          updateOfferNameController.text = '';
                          updateOfferCodeController.text = '';
                          updateOfferDescriptionController.text = '';
                          updateOfferStartDateController.text = '';
                          updateOfferEndDateController.text = '';
                          await getActiveOffersViewData();
                          await Navigator.push(
                            context,
                            MaterialPageRoute(
                                builder: (context) => const OffersData()),
                          );
                        } else {
                          Navigator.of(context, rootNavigator: true).pop();
                          AppSettings.longFailedStyledToast(
                              "Offer upadtion failed", context);
                          Navigator.of(context).pop();
                        }
                      } catch (exception) {
                        Navigator.of(context).pop();
                        print(exception);
                      }
                    } else {
                      AppSettings.longFailedStyledToast("enter details", context);
                    }
                  },
                ),
              ],
            );
          },
        );
      },
    );
  }

  Future<void> getActiveOffersViewData() async {
    isActiveDataLoading = true;


    try {
      var data = await AppSettings.getOffers();
      setState(() {
        List<dynamic> responseData = jsonDecode(data)['data'];
        activeOffersList  = responseData
            .map((jsonObject) => GetOffersDetailsModel.fromJson(jsonObject))
            .toList();
        isActiveDataLoading = false;
      });

    } catch (error) {
      setState(() {
        isActiveDataLoading = false;
        isSereverIssueConnected = true;
      });
    }
  }
  @override
  void initState() {
    super.initState();
    getActiveOffersViewData();
    _pageController = PageController(initialPage: widget.position);
  }
  void removeItem(int index) {
    setState(() {
      widget.userdata.removeAt(index);
      if (_currentPageIndex > 0) {
        _currentPageIndex--;
      }
    });
    _pageController = PageController(initialPage: _currentPageIndex);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Offers Details'),
        backgroundColor: primaryColor,
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () async {
            await Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OffersData()),
            );
          },
        ),
      ),
      body: PageView.builder(
        controller: _pageController,
        itemCount: widget.userdata.length,
        onPageChanged: (int index) {
          setState(() {
            _currentPageIndex = index;
          });
        },
        itemBuilder: (BuildContext context, int index) {
          var object = widget.userdata[index];
          return Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Stack(
                children: [
                  Container(
                    width: MediaQuery.of(context).size.width, // Set width to screen width
                    height: 350, // Set your desired height
                    child: GestureDetector(
                      onTap: () {

                        Navigator.push(
                          context,
                          MaterialPageRoute(
                            builder: (context) => ZoomedImageView(
                              imageUrl: widget.userdata[index].picture.isEmpty
                                  ? "https://assets.aboutamazon.com/dims4/default/1db03c8/2147483647/strip/false/crop/2000x1125+0+0/resize/1200x675!/quality/90/?url=https%3A%2F%2Famazon-blogs-brightspot.s3.amazonaws.com%2Fa3%2Fc2%2F5c0b93db41d789be1bec015003bd%2Fpharmacy-hero-2000x1125.jpg"
                                  : widget.userdata[index].picture[0].url,
                            ),
                          ),
                        );

                      },
                      child: widget.userdata[index].picture.isEmpty
                          ? Image.network(
                        "https://assets.aboutamazon.com/dims4/default/1db03c8/2147483647/strip/false/crop/2000x1125+0+0/resize/1200x675!/quality/90/?url=https%3A%2F%2Famazon-blogs-brightspot.s3.amazonaws.com%2Fa3%2Fc2%2F5c0b93db41d789be1bec015003bd%2Fpharmacy-hero-2000x1125.jpg",
                        fit: BoxFit.cover,
                      )
                          : Image.network(
                        widget.userdata[index].picture[0].url,
                        fit: BoxFit.cover,
                      ),
                    ),
                  ),


                  Positioned(
                    left: 5.0, // Adjust this value as needed
                    top: MediaQuery.of(context).size.height / 5 - 16.0, // Center vertically
                    child: IconButton(
                      icon: Icon(Icons.arrow_back_ios, color: Colors.white),
                      onPressed: () {
                        if (_pageController.page! > 0) {
                          _pageController.previousPage(
                            duration: Duration(milliseconds: 300),
                            curve: Curves.easeInOut,
                          );
                        }
                      },
                    ),
                  ),
                  Positioned(
                    right: 5.0, // Adjust this value as needed
                    top: MediaQuery.of(context).size.height / 5 - 16.0, // Center vertically
                    child: IconButton(
                      icon: Icon(Icons.arrow_forward_ios, color: Colors.white),
                      onPressed: () {
                        if (_pageController.page! < widget.userdata.length - 1) {
                          _pageController.nextPage(
                            duration: Duration(milliseconds: 300),
                            curve: Curves.easeInOut,
                          );
                        }
                      },
                    ),
                  ),
                ],

              ),
              const SizedBox(
                height: 10,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'Name: ',
                        style: TextStyle(
                          color: Colors.black,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].offer_name,
                        style: TextStyle(
                          color: primaryColor,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(
                height: 5,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'Code: ',
                        style: TextStyle(
                          color: Colors.black,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].offer_code,
                        style: TextStyle(
                          color: primaryColor,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(
                height: 5,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'Description: ',
                        style: TextStyle(
                          color: Colors.black,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].description ?? "",
                        style: TextStyle(
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                          color: primaryColor,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(
                height: 5,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'Category: ',
                        style: TextStyle(
                          color: Colors.black,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].category ?? "",
                        style: TextStyle(
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                          color: primaryColor,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(
                height: 5,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'StartDate: ',
                        style: TextStyle(
                          fontSize: 20,
                          color: Colors.black,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].starting_date ?? "",
                        style: TextStyle(
                          color: primaryColor,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(
                height: 5,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding to all RichText widgets
                child: RichText(
                  text: TextSpan(
                    style: DefaultTextStyle.of(context).style,
                    children: <TextSpan>[
                      TextSpan(
                        text: 'EndDate: ',
                        style: TextStyle(
                          fontSize: 20,
                          color: Colors.black,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      TextSpan(
                        text: widget.userdata[index].ending_date ?? "",
                        style: TextStyle(
                          color: primaryColor,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ],
                  ),
                ),
              ),

              const SizedBox(
                height: 15,
              ),
              Padding(
                padding: EdgeInsets.only(left: 16.0), // Add left padding
                child: Row(
                  children: [
                    Switch(
                    value: false,
                      onChanged: (value) {
                        setState(() {
                          switchValue = value;
                          showDialog(
                            context: context,
                            builder: (BuildContext context) {
                              return AlertDialog(
                                title: const Text('Are you sure you want to in_active this Offer?',
                                    style: TextStyle(
                                      color: primaryColor,
                                      fontSize: 20,
                                    )),
                                actionsAlignment: MainAxisAlignment.spaceBetween,
                                actions: [
                                  TextButton(
                                    onPressed: () async {
                                      // Perform the action
                                      print("offercode${widget.userdata[index].offer_code}");
                                      bool deleteOfferStatus =
                                          await AppSettings.deleteOffers(
                                          widget.userdata[index].offer_code);
                                      if(deleteOfferStatus){
                                        widget.userdata.remove(widget.userdata[index]);
                                        switchValue=false;
                                      }
                                      else{
                                        switchValue=false;
                                      }
                                      await Navigator.push(
                                        context,
                                        MaterialPageRoute(
                                            builder: (context) => const OffersData()),
                                      ); // Close the dialog
                                    },
                                    child: const Text('Yes',
                                        style: TextStyle(
                                          color: primaryColor,
                                          fontSize: 20,
                                        )),
                                  ),
                                  TextButton(
                                    onPressed: () {
                                      Navigator.of(context).pop(false);
                                    },
                                    child: const Text('No',
                                        style: TextStyle(
                                          color: primaryColor,
                                          fontSize: 20,
                                        )),
                                  ),
                                ],
                              );

                            },
                          );
                        });
                      },
                    ),
                    const SizedBox(
                      width: 100,
                    ),
                    IconButton(
                      icon: Icon(Icons.edit),
                      onPressed: () {
                        showUpdateOfferDialog(object, index);
                      },
                    ),
                  ],
                ),
              ),
            ],
          );
        },
      ),
    );
  }
}
