Bid Acceptance Widget in Flutter
unknown
dart
5 months ago
24 kB
2
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