You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pharmacy/lib/medicinecart.dart

341 lines
12 KiB

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:healthcare_pharmacy/biddingrequests.dart';
import 'package:healthcare_pharmacy/dashboard.dart';
import 'package:healthcare_pharmacy/getmedicines.dart';
import 'package:healthcare_pharmacy/maps/app_colors.dart';
import 'package:healthcare_pharmacy/medicinedetailspage.dart';
import 'package:healthcare_pharmacy/models/biddingrequest_model.dart';
import 'package:healthcare_pharmacy/models/cartview_model.dart';
import 'package:healthcare_pharmacy/models/offersview_model.dart';
import 'package:healthcare_pharmacy/settings.dart';
import 'package:intl/intl.dart';
import 'package:flutter_cupertino_datetime_picker/flutter_cupertino_datetime_picker.dart';
class MedicineCartList extends StatefulWidget {
var bookidcart;
MedicineCartList({
this.bookidcart
});
@override
State<MedicineCartList> createState() => _MedicineCartListState();
}
class _MedicineCartListState extends State<MedicineCartList> with TickerProviderStateMixin {
bool isSupplierDataLoading=false;
bool isSereverIssue = false;
bool isSereverIssueConnected = false;
bool isSereverIssuePending = false;
var startdate;
var enddate;
String totalPrice='';
String medicinetime='';
String bookingidstring='';
bool isLoading=false;
List<BiddingCartviewModel> offersviewList = [];
TextEditingController medicine_nameController = TextEditingController();
TextEditingController medicine_quantityController = TextEditingController();
TextEditingController medicine_priceController = TextEditingController();
TextEditingController medicine_timingsController = TextEditingController();
Future<void> getCartViewData() async {
isLoading = true;
try {
var response = await AppSettings.getCartDetails(widget.bookidcart).then((value){
setState(() {
// offersviewList = BiddingCartviewModel.fromJson(response['items']) as List<BiddingCartviewModel>;
offersviewList =
((jsonDecode(value)['items']) as List).map((dynamic model) {
return BiddingCartviewModel.fromJson(model);
}).toList();
totalPrice=jsonDecode(value)['totalPrice'].toString();
print(medicinetime);
print(totalPrice);
isLoading = false;
});
});
print("offersviewListdata${jsonDecode(response)}");
} catch (e) {
setState(() {
isLoading = false;
isSereverIssueConnected = true;
});
}
}
@override
void initState() {
// TODO: implement initState
getCartViewData();
super.initState();
}
Widget renderzUi() {
if (offersviewList.length != 0) {
return Column(crossAxisAlignment: CrossAxisAlignment.end, children: [
Expanded(
child: ListView.builder(
padding: EdgeInsets.all(0),
itemCount: offersviewList.length,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Padding(
padding: EdgeInsets.all(8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Container(
width: MediaQuery.of(context).size.width * .70,
child: Row(
children: [
Column(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text('MedicineName:',
style: labelTextStyle()),
SizedBox(
height: 10,
),
Text(
'Medicine Timings:',
style: labelTextStyle()),
SizedBox(
height: 10,
),
Text('MedicineQuantity:',
style: labelTextStyle()),
SizedBox(
height: 10,
),
Text('MedicinePrice:',
style: labelTextStyle()),
],
),
SizedBox(
width: 10,
),
Column(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
SizedBox(
height: 12,
),
Text(
offersviewList[index].medicinename_bidding!
.toUpperCase(),
style: valuesTextStyle()),
SizedBox(
height: 12,
),
Text(
offersviewList[index].medicine_timings![0].medicineTimings!.toUpperCase(),
style: valuesTextStyle()),
SizedBox(
height: 10,
),
Text(
offersviewList[index].quantity_bidding.toString()
.toUpperCase(),
style: valuesTextStyle()),
SizedBox(
height: 10,
),
Text(
offersviewList[index].price_bidding.toString()
.toUpperCase(),
style: valuesTextStyle()),
SizedBox(
height: 10,
),
],
),
],
)),
),
],
),
),
);
})),
Container(
width: 400,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child:TextButton(
onPressed: () {
// Add your button click logic here
},
child: Text(
'Total Price:$totalPrice',
style: TextStyle(
fontSize: 20,
color: AppColors.primaryColor, // Text color
decoration: TextDecoration.underline, // Underline the text
fontWeight: FontWeight.bold, // Bold text
),
),
),),
SizedBox(
height: 10,
),
Container(
width: 400,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async{
},
child: Text('CheckOut'),
)),
/*Column(
children: [
Padding(padding: const EdgeInsets.fromLTRB(10, 10,10,10),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Add More',
style: TextStyle(
color: Colors.white,
),
),
TextButton(
child: const Text(
'Sign Up',
style: TextStyle(fontSize: 15,
decoration: TextDecoration.underline,color: Colors.white),
),
onPressed: () {
*//* Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SignUp()),
);*//*
//signup screen
},
)
],
),)
Container(
width: 400,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child:TextButton(
onPressed: () {
// Add your button click logic here
},
child: Text(
'Total Price:$totalPrice',
style: TextStyle(
fontSize: 20,
color: AppColors.primaryColor, // Text color
decoration: TextDecoration.underline, // Underline the text
fontWeight: FontWeight.bold, // Bold text
),
),
),),
SizedBox(
height: 10,
),
Container(
width: 400,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async{
},
child: Text('CheckOut'),
)),
],
)*/
]);
} 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,
),
Text('No Data Found'),
SizedBox(
height: 20,
),
],
),
));
}
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
// Add a back button to the leading property
backgroundColor: primaryColor,
leading: IconButton(
icon: Icon(Icons.arrow_back), // You can use a different back icon if needed
onPressed: () {
Navigator.of(context).pop();
// Implement the navigation logic to go back
/* Navigator.push(
context,
MaterialPageRoute(builder: (context) => GetMedicines()),
);*/ // This will pop the current route and go back
},
),
title: Text('Cart Details'),
),
body: isLoading?Center(
child: CircularProgressIndicator(
color: primaryColor,
strokeWidth: 5.0,
),
):renderzUi(),
));
}
}