import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; import '../../../../locator.dart'; import 'shared/icon_with_bg.dart'; class ProductNameAndPrice extends StatefulWidget { BuildContext context; PharmacyProduct item; final customerId; final bool isInWishList; final Function notifyMeWhenAvailable; final Function addToWishlistFunction; final Function deleteFromWishlistFunction; final bool isStockAvailable; final String stockAvailability; AuthenticatedUserObject authenticatedUserObject = locator(); ProductNameAndPrice(this.context, this.item, {this.customerId, this.isInWishList, this.notifyMeWhenAvailable, this.addToWishlistFunction, this.deleteFromWishlistFunction, this.isStockAvailable = true, this.stockAvailability}); @override _ProductNameAndPriceState createState() => _ProductNameAndPriceState(); } class _ProductNameAndPriceState extends State { @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return Container( color: Color(0xffF7F7F7), child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( height: 10, ), widget.item.rxMessage != null ? Container( // width: widget.item.rxMessage != null ? MediaQuery.of(context).size.width / 2.8 : 0, width: double.infinity, height: 40, padding: EdgeInsets.all(4), decoration: BoxDecoration( color: Color(0xffD02127), // color: Colors.red[700] // borderRadius: BorderRadius.only(topLeft: Radius.circular(6)), ), child: Row( children: [ Padding( padding: const EdgeInsets.only(left: 8, right: 8), child: Icon( Icons.warning, color: Colors.white, ), ), Text( projectViewModel.isArabic ? widget.item.rxMessagen.toString() : widget.item.rxMessage.toString(), style: TextStyle( color: Colors.white, // regular: true, fontSize: 17, fontWeight: FontWeight.w600, letterSpacing:-0.68 // textAlign: TextAlign.center, )), ], )) : Container(), FractionallySizedBox( widthFactor: 0.93, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ // Texts(widget.item.price.toString() + " " + TranslationBase.of(context).sar, fontWeight: FontWeight.bold, fontSize: 20), if (widget.stockAvailability != null) Container( margin: EdgeInsets.only(top: 10.0, right: 10.0), padding: EdgeInsets.only( left: 11.0, right: 11.0, top: 0, bottom: 0), decoration: BoxDecoration( border: Border.all( color: getStatusBackgroundColor(), style: BorderStyle.solid, width: 5.0, ), color: getStatusBackgroundColor(), borderRadius: BorderRadius.circular(30.0)), // child: Text( // widget.stockAvailability, // style: TextStyle( // fontWeight: FontWeight.w600, // fontSize: 11, // color: Color(0xffFFFFFF), // ), // color: getStatusBackgroundColor(), // borderRadius: BorderRadius.circular(30.0)), child: Text( widget.stockAvailability, style: TextStyle(fontWeight: FontWeight.w600, fontSize: 11, color: Color(0xffFFFFFF),letterSpacing:-0.44)), //color: widget.isStockAvailable ? Colors.white : Colors.red, ), // SizedBox(width: 20), if ( widget.authenticatedUserObject.isLogin) widget.stockAvailability != null && !widget.isStockAvailable && widget.customerId != null ? Container( child: Row( children: [ IconButton( iconSize: 25, icon: Icon(Icons.notifications_active), color: new Color(0xff2E303A), onPressed: () { widget.notifyMeWhenAvailable( context, widget.item.id); }, ), IconButton( icon: Icon(!widget.isInWishList ? Icons.favorite_border : Icons.favorite), color: !widget.isInWishList ? Color(0xff2E303A) : Color(0xffD02127), onPressed: () async { { if (widget.customerId != null) { if (!widget.isInWishList) { await widget .addToWishlistFunction(widget.item.id); } else { await widget.deleteFromWishlistFunction( widget.item.id); } } else { return; } setState(() {}); } }, ) ], ), ) : IconButton( icon: Icon(!widget.isInWishList ? Icons.favorite_border : Icons.favorite), color: !widget.isInWishList ? Color(0xff2E303A) : Color(0xffD02127), onPressed: () async { { if (widget.customerId != null) { if (!widget.isInWishList) { await widget .addToWishlistFunction(widget.item.id); } else { await widget.deleteFromWishlistFunction( widget.item.id); } } else { return; } setState(() {}); } }, ) // BorderedButton( // TranslationBase.of(context).notifyMe, // hasBorder: true, // borderColor: Colors.green, // textColor: Colors.green, // fontWeight: FontWeight.bold, // vPadding: 6, // hPadding: 14, // handler: () => widget.notifyMeWhenAvailable(context, widget.item.id), // ) // InkWell( // onTap: () => widget.notifyMeWhenAvailable(context, widget.item.id), // child: Row(children: [ // Texts( // TranslationBase.of(context).notifyMe, // decoration: TextDecoration.underline, // color: Colors.blue, // ), // SizedBox(width: 4), // Icon( // FontAwesomeIcons.bell, // color: Colors.blue, // size: 15.0, // ) // ]), // ) // : IconWithBg( // icon: !widget.isInWishList ? Icons.favorite_border : Icons.favorite, // color: !widget.isInWishList ? Colors.white : Colors.red[800], // onPress: () async { // { // if (widget.customerId != null) { // if (!widget.isInWishList) { // await widget.addToWishlistFunction(widget.item.id); // } else { // await widget.deleteFromWishlistFunction(widget.item.id); // } // } else { // return; // } // setState(() {}); // } // }, // ) ], ), ), Padding( padding: const EdgeInsets.only(left: 8, right: 8, top: 1, bottom: 12), child: Container( margin: EdgeInsets.only(left: 10, right: 10), child: Align( alignment: projectViewModel.isArabic ? Alignment.topRight : Alignment.topLeft, child: Text( projectViewModel.isArabic ? widget.item.namen : widget.item.name, style: TextStyle( fontWeight: FontWeight.w600, fontSize: 16, letterSpacing: -0.96), ), ), ), ), Padding( padding: const EdgeInsets.only(left: 8, right: 8), child: Container( margin: EdgeInsets.only(left: 10, right: 10), child: Align( alignment: projectViewModel.isArabic ? Alignment.topRight : Alignment.topLeft, child: Text( TranslationBase.of(context).sar + " " + widget.item.price.toString(), style: TextStyle( fontWeight: FontWeight.bold, fontSize: 19, letterSpacing: -0.76), ), ), ), ), FractionallySizedBox( widthFactor: 0.95, child: Row( children: [ Container( margin: EdgeInsets.only(left: 8, right: 8), child: Align( alignment: Alignment.bottomLeft, child: Row( children: [ RatingBar.readOnly( initialRating: double.parse( widget.item.approvedRatingSum.toString()), size: 18.0, filledColor: Color(0XFFD02127), emptyColor: Color(0XFFD02127), isHalfAllowed: true, halfFilledIcon: Icons.star_half, filledIcon: Icons.star, emptyIcon: Icons.star_border, ), SizedBox( width: 5, ), // Texts( // "${widget.item.approvedRatingSum}", // fontWeight: FontWeight.bold, // fontSize: 12, // ), // SizedBox( // width: 30, // ), Text( "(${widget.item.approvedTotalReviews}${TranslationBase.of(context).review})", style: TextStyle( fontWeight: FontWeight.w600, fontSize: 12), ), SizedBox( width: 70, ), // if (widget.item.rxMessage != null) // Row( // children: [ // Text( // projectViewModel.isArabic ? widget.item.rxMessagen.toString() : widget.item.rxMessage.toString(), // style: TextStyle(color: Colors.red, fontSize: 10), // ), // ], // ) ], ), ), ), ], ), ), SizedBox( height: 20, ), ], ), ); } Color getStatusBackgroundColor() { if (widget.isStockAvailable) return Color(0xFF5AB145); else return Color(0xFFD02127); } }