You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/pages/pharmacies/screens/product-details/product-name-and-price.dart

273 lines
11 KiB
Dart

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<AuthenticatedUserObject>();
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<ProductNameAndPrice> {
@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,
// textAlign: TextAlign.center,
)
),
],
)
)
: Container(),
FractionallySizedBox(
widthFactor: 0.95,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Texts(widget.item.price.toString() + " " + TranslationBase.of(context).sar, fontWeight: FontWeight.bold, fontSize: 20),
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: widget.isStockAvailable ? Colors.white : Colors.red,
),
),
// SizedBox(width: 20),
if (widget.authenticatedUserObject.isLogin)
!widget.isStockAvailable && widget.customerId != null
?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(() {});
}
},
)
// 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: 15),
child: Container(
margin: EdgeInsets.only(left: 5, right: 5),
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),
),
),
),
),
Padding(
padding: const EdgeInsets.only(left: 8,right: 8),
child: Container(
margin: EdgeInsets.only(left: 5, right: 5),
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),),
),
),
),
FractionallySizedBox(
widthFactor: 0.95,
child: Row(
children: [
Container(
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: 10,
),
// 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: 30,
),
],
),
);
}
Color getStatusBackgroundColor() {
if (widget.isStockAvailable)
return Color(0xFF5AB145);
else return Color(0xFFD02127);
}
}