Bid Acceptance Widget in Flutter
unknown
dart
a year ago
24 kB
5
Indexable
Widget bidAcceptView() {
return SizedBox.expand(
child: Stack(
alignment: Alignment.bottomCenter,
children: [
servicesListData != null && duration >= 0
? Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(2 * defaultRadius), topRight: Radius.circular(2 * defaultRadius)),
),
child: SingleChildScrollView(
// controller: scrollController,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: Alignment.center,
child: Container(
margin: EdgeInsets.only(top: 16),
height: 6,
width: 60,
decoration: BoxDecoration(color: primaryColor, borderRadius: BorderRadius.circular(defaultRadius)),
alignment: Alignment.center,
),
),
SizedBox(height: 8),
Padding(
padding: EdgeInsets.only(left: 16),
child: Text(language.bid_for_ride, style: primaryTextStyle(size: 18)),
),
SizedBox(height: 8),
Padding(
padding: EdgeInsets.all(16),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(defaultRadius),
child: commonCachedNetworkImage(servicesListData!.riderProfileImage.validate(), height: 35, width: 35, fit: BoxFit.cover),
),
SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('${servicesListData!.riderName.capitalizeFirstLetter()}',
maxLines: 1, overflow: TextOverflow.ellipsis, style: boldTextStyle(size: 14)),
SizedBox(height: 4),
Text('${servicesListData!.riderEmail.validate()}', maxLines: 1, overflow: TextOverflow.ellipsis, style: secondaryTextStyle()),
],
),
),
],
),
// SizedBox(height: 16,),
if (estimatedTotalPrice != null && estimatedDistance != null)
Container(
padding: EdgeInsets.symmetric(vertical: 8),
// decoration:BoxDecoration(color: !appStore.isDarkMode ? scaffoldColorLight : scaffoldColorDark, borderRadius: BorderRadius.all(radiusCircular(8)), border: Border.all(width: 1, color: dividerColor)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: Row(
children: [
Text('${language.estAmount}:', style: secondaryTextStyle(size: 16)),
SizedBox(width: 4),
printAmountWidget(amount: estimatedTotalPrice.toStringAsFixed(digitAfterDecimal), size: 14)
],
),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
children: [
Text('${language.distance}:', style: secondaryTextStyle(size: 16)),
SizedBox(width: 4),
Text('${estimatedDistance} ${distance_unit}', maxLines: 1, overflow: TextOverflow.ellipsis, style: boldTextStyle(size: 14)),
],
),
],
),
width: context.width(),
),
addressDisplayWidget(
endLatLong: LatLng(servicesListData!.endLatitude.toDouble(), servicesListData!.endLongitude.toDouble()),
endAddress: servicesListData!.endAddress,
startLatLong: LatLng(servicesListData!.startLatitude.toDouble(), servicesListData!.startLongitude.toDouble()),
startAddress: servicesListData!.startAddress),
if (servicesListData != null && servicesListData!.otherRiderData != null)
Divider(
color: Colors.grey.shade300,
thickness: 0.7,
height: 8,
),
_bookingForView(),
SizedBox(height: 8),
Row(
children: [
Expanded(
child: inkWellWidget(
onTap: () {
reqCheckCounter=0;
rejectBid();
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 8),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(defaultRadius), border: Border.all(color: Colors.red)),
child: Text(language.decline, style: boldTextStyle(color: Colors.red), textAlign: TextAlign.center),
),
),
),
SizedBox(width: 16),
Expanded(
child: AppButtonWidget(
padding: EdgeInsets.symmetric(vertical: 12, horizontal: 8),
text: language.place_bid,
shapeBorder: RoundedRectangleBorder(borderRadius: BorderRadius.circular(defaultRadius)),
color: primaryColor,
textStyle: boldTextStyle(color: Colors.white),
onTap: () async{
num x=num.tryParse(estimatedTotalPrice.toString())!.round()??0;
bidAmountController.text=x.toString();
await showModalBottomSheet(
context: context,
isDismissible: false,
backgroundColor: Colors.white,
isScrollControlled: true,
builder: (context) {
return Wrap(
children: [
Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: SizedBox(
child: Padding(
padding: const EdgeInsets.only(left: 0, right: 0, top: 16),
child: Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(language.place_your_bid, style: boldTextStyle(size: 18)),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(Icons.clear),
),
],
),
),
SizedBox(height: 16,),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
IconButton(onPressed: (){
try{
num x=num.tryParse(bidAmountController.text.toString())!.round()??0;
if(x>0){
x-=10;
bidAmountController.text=x.toString();
setState(() {});
}
}catch(e){
}
}, icon:Icon(Icons.remove_circle_outline,color: primaryColor,size: 45,)),
Expanded(
child: AppTextField(
controller: bidAmountController,
textFieldType: TextFieldType.PHONE,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
decoration: inputDecoration(context, label: language.amount),
maxLines: 1,
minLines: 1,
validator: (value) {
if (value!.isEmpty) return language.thisFieldRequired;
return null;
},
),
),
IconButton(onPressed: (){
try{
num x=num.tryParse(bidAmountController.text.toString())!.round()??0;
x+=10;
bidAmountController.text=x.toString();
setState(() {});
}catch(e){
}
}, icon:Icon(Icons.add_circle_outline_sharp,color: primaryColor,size: 45,)),
],
),
SizedBox(height: 16,),
AppTextField(
controller: bidNoteController,
textFieldType: TextFieldType.OTHER,
inputFormatters: [],
decoration: inputDecoration(context, label: language.note_optional),
maxLines: 3,
minLines: 3,
validator: (value) {
if (value!.isEmpty) return language.thisFieldRequired;
return null;
},
),
],
),
),
SizedBox(height: 16,),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Align(
alignment: Alignment.centerRight,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: AppButtonWidget(
onTap: () async{
reqCheckCounter=0;
try{
num x=num.tryParse(bidAmountController.text.toString())??0;
if(x>0){
hideKeyboard(context);
Navigator.pop(context);
appStore.setLoading(true);
int rideId=servicesListData!.id??0;
Map req= {"ride_request_id": "${rideId}", "bid_amount": bidAmountController.text, "notes": bidNoteController.text};
LDBaseResponse b=await applyBid(request: req);
bidData=ModelBidData(
bidAmount: bidAmountController.text,
isBidAccept: 0,
notes: bidNoteController.text,
);
bidIsProcessing=1;
setState(() {});
// getNewRideReq(rideId,refresh:true);
// 'on_stream_api_call':0
await rideService.updateStatusOfRide(rideID:rideId, req: {'on_rider_stream_api_call': 0,},);
bidAmountController.clear();
bidNoteController.clear();
appStore.setLoading(false);
toast(b.message.toString());
}else{
toast("Enter Valid Bid Amount");
}
}catch(e,s){
log("Error ::$e stack:::$s");
toast(e.toString());
}
},
text: language.confirm,
color: primaryColor,
textStyle: boldTextStyle(color: Colors.white),
),
),
],
),
),
),
SizedBox(height: 16),
],
),
),
),
),
],
);
});
setState(() {});
},
),
),
],
)
],
),
),
],
),
),
)
: SizedBox(),
Observer(builder: (context) {
return appStore.isLoading ? loaderWidget() : SizedBox();
})
],
),
);
}
Widget bidProcessView() {
return SizedBox.expand(
child: Stack(
alignment: Alignment.bottomCenter,
children: [
servicesListData != null
? Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(topLeft: Radius.circular(2 * defaultRadius), topRight: Radius.circular(2 * defaultRadius)),
),
child: SingleChildScrollView(
// controller: scrollController,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: Alignment.center,
child: Container(
margin: EdgeInsets.only(top: 16),
height: 6,
width: 60,
decoration: BoxDecoration(color: primaryColor, borderRadius: BorderRadius.circular(defaultRadius)),
alignment: Alignment.center,
),
),
SizedBox(height: 8),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Text(language.bid_under_review, style: primaryTextStyle(size: 18,weight: FontWeight.w700)),
),
SizedBox(height: 8),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Text(language.bid_under_review_note, style: secondaryTextStyle()),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Divider(),
),
SizedBox(height: 8),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text("${language.amount}: ",style: primaryTextStyle(size: 16,weight: FontWeight.w400)),
printAmountWidget(amount: bidData!.bidAmount.toString()),
],
),
),
SizedBox(height: 8),
if(bidData!.notes!=null && bidData!.notes!.isNotEmpty)
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
// Text("Note: ",style: primaryTextStyle(size: 16,weight: FontWeight.w400)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(bidData!.notes.toString(), style: secondaryTextStyle()),
],
),
),
],
),
),
if(bidData!.notes!=null && bidData!.notes!.isNotEmpty)
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.all(16),
child: AppButtonWidget(
width: MediaQuery.of(context).size.width,
text: language.cancel_my_bid,
textColor: primaryColor,
color: Colors.white,
shapeBorder: RoundedRectangleBorder(borderRadius: BorderRadius.circular(defaultRadius), side: BorderSide(color: primaryColor)),
onTap: () {
rejectBid();
}),
),
],
),
),
)
: SizedBox(),
Observer(builder: (context) {
return appStore.isLoading ? loaderWidget() : SizedBox();
})
],
),
);
}Editor is loading...
Leave a Comment