import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:geolocator/geolocator.dart'; import 'package:healthcare_pharmacy/companyoffrers.dart'; import 'package:healthcare_pharmacy/getmedicines.dart'; import 'package:healthcare_pharmacy/maps/app_colors.dart'; import 'package:healthcare_pharmacy/medicinecart.dart'; import 'package:healthcare_pharmacy/models/addoffer_model.dart'; import 'package:healthcare_pharmacy/models/biddingrequest_model.dart'; import 'package:healthcare_pharmacy/models/companyoffer_model.dart'; import 'package:healthcare_pharmacy/settings.dart'; import 'package:image_picker/image_picker.dart'; import 'package:photo_view/photo_view.dart'; class GetAllOffers extends StatefulWidget { var bookidID; GetAllOffers({ this.bookidID }); @override State createState() => _GetAllOffersState(); } class _GetAllOffersState extends State { String Url = ''; List offersList = []; List prescriptionsListOriginal = []; bool isPrescriptionsDataLoading = false; bool isSereverIssue = false; bool isLoading=false; List checked = []; TextEditingController BookingidController = TextEditingController(); TextEditingController offerCodeController = TextEditingController(); Future getActiveOffersViewData() async { isLoading = true; try { var data = await AppSettings.getOffers(); setState(() { List responseData = jsonDecode(data)['data']; offersList = responseData .map((jsonObject) => GetOffersDetailsModel.fromJson(jsonObject)) .toList(); isLoading = false; }); } catch (error) { setState(() { isLoading = false; isSereverIssue = true; }); } } @override void initState() { getActiveOffersViewData(); super.initState(); BookingidController.text=widget.bookidID; } void _onCheckboxChanged(String id, bool value) { setState(() { if (value) { checked.add(id); } else { checked.remove(id); } }); } showPicDialog(var imageUrl){ return showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return StatefulBuilder( builder: (BuildContext context, StateSetter setState) { return AlertDialog( title: const Text(''), content: SingleChildScrollView( child: ListBody( children: [ Container( width: MediaQuery.of(context).size.width * .10, height: MediaQuery.of(context).size.height * .50, child: PhotoView( imageProvider: NetworkImage(imageUrl) as ImageProvider, maxScale: PhotoViewComputedScale.contained * 4.0, minScale: PhotoViewComputedScale.contained, initialScale: PhotoViewComputedScale.contained, basePosition: Alignment.center, ) ) ], ), ), actions: [ TextButton( child: Text('Close', style: textButtonStyle()), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }); }, ); } Widget _allPharmacies() { if (offersList.length != 0) { return Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded( child: ListView.builder( padding: EdgeInsets.all(0), itemCount: offersList.length, itemBuilder: (BuildContext context, int index) { return Card( child: Padding( padding: EdgeInsets.all(8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( child: Container( width: MediaQuery.of(context).size.width * .18, height: MediaQuery.of(context).size.height * .10, decoration: BoxDecoration( shape: BoxShape.circle, image: DecorationImage( image: (AppSettings.updatedImage != null) ? FileImage(AppSettings.updatedImage!) as ImageProvider : AssetImage("images/mobilebg.png"), // picked file fit: BoxFit.cover, ), ), ), onTap: () { // showPicDialog(prescriptionsList[index].prescription_url); }, ), SizedBox(width: MediaQuery.of(context).size.width * .02,), Container( width: MediaQuery.of(context).size.width * .55, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( offersList[index].offer_name .toString() .toUpperCase(), style: valuesTextStyle(), ), Text( offersList[index].offer_code .toString() .toUpperCase(), style: valuesTextStyle(), ), Text( offersList[index].category .toString() .toUpperCase(), style: valuesTextStyle(), ), Text( offersList[index].description .toString() .toUpperCase(), style: valuesTextStyle(), ), ], ), ), Checkbox( value: checked.contains( offersList[index].offer_code.toString()), onChanged: (value) { _onCheckboxChanged( offersList[index].offer_code.toString(), value ?? false); }, ), ], ), ), ); }, ), ), Container( padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), child:TextButton( onPressed: () { // Add your button click logic here }, child: Text( 'OfferId:$checked', style: TextStyle( fontSize: 15, color:primaryColor, // Text color decoration: TextDecoration.underline,// Underline the text fontWeight: FontWeight.bold, // Bold text ), ), ),), SizedBox( height: 10, ), Container( width: MediaQuery.of(context).size.width, height: 60, padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), child: ElevatedButton( style: ElevatedButton.styleFrom( primary: primaryColor, // background onPrimary: Colors.white, // foreground ), onPressed: ()async { // Get the selected offer code from the checked list String selectedOfferCode = checked.isNotEmpty ? checked[0] : ''; // Check if an offer code is selected if (selectedOfferCode.isNotEmpty) { bool discountOfferStatus = await AppSettings.discountOffer( selectedOfferCode, widget.bookidID, ); if (discountOfferStatus) { AppSettings.longSuccessToast('Offer added successfully'); Navigator.of(context).pop(true); await Navigator.push( context, MaterialPageRoute( builder: (context) => MedicineCartList()) ); } else { AppSettings.longFailedToast('Offer addition failed'); } } else { // Handle the case where no offer code is selected AppSettings.longFailedToast('Please select an offer'); } }, child: Text('Submit'), )), ], ); } else { return Center( child: Padding( padding: EdgeInsets.fromLTRB(0, 40, 0, 0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(height: MediaQuery.of(context).size.height * .25,), ], ), ), ); } } /**/ @override Widget build(BuildContext context) { return Scaffold( appBar: AppSettings.appBar('All Pharmacies'), body: isPrescriptionsDataLoading?Center( child: CircularProgressIndicator( color: primaryColor, strokeWidth: 5.0, ), ): _allPharmacies(), ); } }