fix bottom sheet functions

merge-update-with-lab-changes
Elham Rababh 4 years ago
parent 944bbce1bf
commit 8fac62bcb1

@ -49,7 +49,7 @@ class ProductDetailViewModel extends BaseViewModel{
Future notifyMe(customerId, itemID) async { Future notifyMe(customerId, itemID) async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.BusyLocal);
await _productDetailService.notifyMe(customerId, itemID); await _productDetailService.notifyMe(customerId, itemID);
if (_productDetailService.hasError) { if (_productDetailService.hasError) {
error = _productDetailService.error; error = _productDetailService.error;
@ -60,7 +60,7 @@ class ProductDetailViewModel extends BaseViewModel{
Future addToCartData(quantity, itemID) async { Future addToCartData(quantity, itemID) async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.BusyLocal);
await _productDetailService.addToCart(quantity, itemID); await _productDetailService.addToCart(quantity, itemID);
if (_productDetailService.hasError) { if (_productDetailService.hasError) {
error = _productDetailService.error; error = _productDetailService.error;

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_detail_view_model.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/footor/quantity_box.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/footor/quantity_box.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
@ -10,6 +11,7 @@ import 'package:hexcolor/hexcolor.dart';
import '../../../../../locator.dart'; import '../../../../../locator.dart';
import '../../../../../routes.dart'; import '../../../../../routes.dart';
import '../../cart-order-page.dart'; import '../../cart-order-page.dart';
import '../product-detail.dart';
class FooterWidget extends StatefulWidget { class FooterWidget extends StatefulWidget {
final bool isAvailable; final bool isAvailable;
@ -18,13 +20,17 @@ class FooterWidget extends StatefulWidget {
final int quantityLimit; final int quantityLimit;
final PharmacyProduct item; final PharmacyProduct item;
final Function addToCartFunction; final Function addToCartFunction;
final ProductDetailViewModel model;
int quantity; int quantity;
bool isOverQuantity; bool isOverQuantity;
FooterWidget(this.isAvailable, this.maxQuantity, this.minQuantity, FooterWidget(this.isAvailable, this.maxQuantity, this.minQuantity,
this.quantityLimit, this.item, this.quantityLimit, this.item,
{this.quantity, this.isOverQuantity = false, this.addToCartFunction}); {this.quantity,
this.isOverQuantity = false,
this.addToCartFunction,
this.model});
@override @override
_FooterWidgetState createState() => _FooterWidgetState(); _FooterWidgetState createState() => _FooterWidgetState();
@ -98,38 +104,31 @@ class _FooterWidgetState extends State<FooterWidget> {
label: i, label: i,
onTapFunc: onChangeValue, onTapFunc: onChangeValue,
isSelected: widget.quantity == i), isSelected: widget.quantity == i),
Column( Container(
children: [ width: 100,
Container( decoration: BoxDecoration(
width: 100, border: Border.all(color: Colors.grey[300]),
decoration: BoxDecoration( color: Colors.white,
border: ),
Border.all(color: Colors.grey[300]), child: TextField(
color: Colors.white, decoration: InputDecoration(
), labelText: ' Quantity # '),
child: TextField( onChanged: (text) {
decoration: InputDecoration( if (int.tryParse(text) == null) {
labelText: 'quantity #'), text = '';
onChanged: (text) { } else {
print(widget.quantity); setState(() {
print(widget.quantityLimit); widget.quantity = int.parse(text);
if (int.tryParse(text) == null) { if (widget.quantity >=
text = ''; widget.quantityLimit) {
widget.isOverQuantity = true;
} else { } else {
setState(() { widget.isOverQuantity = false;
widget.quantity = int.parse(text);
if (widget.quantity >=
widget.quantityLimit) {
widget.isOverQuantity = true;
} else {
widget.isOverQuantity = false;
}
});
} }
}, });
), }
), },
], ),
), ),
], ],
), ),
@ -175,7 +174,7 @@ class _FooterWidgetState extends State<FooterWidget> {
quantityUI = 80; quantityUI = 80;
showUI = false; showUI = false;
} else { } else {
quantityUI = 150; quantityUI = 160;
showUI = true; showUI = true;
} }
}); });
@ -197,10 +196,13 @@ class _FooterWidgetState extends State<FooterWidget> {
); );
} else } else
await widget.addToCartFunction( await widget.addToCartFunction(
widget.quantity, widget.item.id, context); quantity: widget.quantity,
itemID: widget.item.id,
model: widget.model);
}, },
fontWeight: FontWeight.w600,
borderColor: Color(0xFF4CAF50), borderColor: Color(0xFF4CAF50),
borderRadius: 5, borderRadius: 3,
color: Color(0xFF4CAF50), color: Color(0xFF4CAF50),
), ),
), ),
@ -215,14 +217,18 @@ class _FooterWidgetState extends State<FooterWidget> {
widget.quantity > widget.quantityLimit || widget.quantity > widget.quantityLimit ||
widget.item.rxMessage != null, widget.item.rxMessage != null,
onTap: () async { onTap: () async {
await widget.addToCartFunction( await widget.addToCartFunction(
widget.quantity, widget.item.id, context); quantity: widget.quantity,
itemID: widget.item.id,
model: widget.model);
Navigator.push( Navigator.push(
context, context,
FadePage(page: CartOrderPage()), FadePage(page: CartOrderPage()),
); );
}, },
borderRadius: 5, fontWeight: FontWeight.w600,
borderColor: Colors.grey[800],
borderRadius: 3,
disableColor: Colors.grey[700], disableColor: Colors.grey[700],
color: !widget.isAvailable && widget.quantity > 0 || color: !widget.isAvailable && widget.quantity > 0 ||
widget.quantity > widget.quantityLimit || widget.quantity > widget.quantityLimit ||

@ -103,7 +103,8 @@ class __ProductDetailPageState extends State<ProductDetailPage> {
deleteFromWishlistFunction: () async { deleteFromWishlistFunction: () async {
await deleteFromWishlistFunction(itemID: itemID, model: model); await deleteFromWishlistFunction(itemID: itemID, model: model);
}, },
isInWishList:isInWishList isInWishList:isInWishList,
addToCartFunction:addToCartFunction ,
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
@ -323,6 +324,7 @@ class __ProductDetailPageState extends State<ProductDetailPage> {
quantity: quantity, quantity: quantity,
isOverQuantity: isOverQuantity, isOverQuantity: isOverQuantity,
addToCartFunction: addToCartFunction, addToCartFunction: addToCartFunction,
model: model,
), ),
)); ));
} }
@ -338,17 +340,17 @@ class __ProductDetailPageState extends State<ProductDetailPage> {
await model.deleteWishlistData(itemID); await model.deleteWishlistData(itemID);
setState(() {}); setState(() {});
} }
addToCartFunction(
{quantity,
itemID,
ProductDetailViewModel model}) async {
GifLoaderDialogUtils.showMyDialog(context);
await model.addToCartData(quantity, itemID);
GifLoaderDialogUtils.hideDialog(context);
}
} }
addToCartFunction(
{quantity,
itemID,
BuildContext context,
ProductDetailViewModel model}) async {
GifLoaderDialogUtils.showMyDialog(context);
await model.addToCartData(quantity, itemID);
GifLoaderDialogUtils.hideDialog(context);
}
notifyMeWhenAvailable( notifyMeWhenAvailable(
{itemId, customerId, ProductDetailViewModel model}) async { {itemId, customerId, ProductDetailViewModel model}) async {

@ -23,6 +23,8 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget {
final Function deleteFromWishlistFunction; final Function deleteFromWishlistFunction;
final int quantity; final int quantity;
final bool isInWishList; final bool isInWishList;
final Function addToCartFunction;
ProductAppBar( ProductAppBar(
{Key key, {Key key,
@ -31,7 +33,7 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget {
this.addToWishlistFunction, this.addToWishlistFunction,
this.quantity, this.quantity,
this.deleteFromWishlistFunction, this.deleteFromWishlistFunction,
this.isInWishList}) this.isInWishList, this.addToCartFunction})
: super(key: key); : super(key: key);
AuthenticatedUserObject authenticatedUserObject = AuthenticatedUserObject authenticatedUserObject =
@ -83,7 +85,7 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget {
top:0, right: -1.0, top:0, right: -1.0,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.red, color: Colors.red[800],
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
@ -136,7 +138,6 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget {
await addToCartFunction( await addToCartFunction(
quantity: quantity, quantity: quantity,
itemID: itemID, itemID: itemID,
context: context,
model: model); model: model);
Navigator.of(context).pop(); Navigator.of(context).pop();

@ -29,7 +29,10 @@ class SecondaryButton extends StatefulWidget {
this.small = false, this.small = false,
this.disabled = false, this.disabled = false,
this.borderColor, this.borderColor,
this.noBorderRadius = false, this.borderRadius, this.disableColor}) this.noBorderRadius = false,
this.borderRadius,
this.disableColor,
this.fontWeight})
: super(key: key); : super(key: key);
final String label; final String label;
@ -45,7 +48,7 @@ class SecondaryButton extends StatefulWidget {
final bool noBorderRadius; final bool noBorderRadius;
final double borderRadius; final double borderRadius;
final Color disableColor; final Color disableColor;
final FontWeight fontWeight;
@override @override
@ -173,7 +176,8 @@ class _SecondaryButtonState extends State<SecondaryButton>
child: ClipRRect( child: ClipRRect(
borderRadius: widget.noBorderRadius borderRadius: widget.noBorderRadius
? BorderRadius.all(Radius.circular(0.0)) ? BorderRadius.all(Radius.circular(0.0))
: BorderRadius.all(Radius.circular(widget.borderRadius??10.0)), : BorderRadius.all(
Radius.circular(widget.borderRadius ?? 10.0), ),
child: Stack( child: Stack(
children: <Widget>[ children: <Widget>[
Positioned( Positioned(
@ -184,7 +188,7 @@ class _SecondaryButtonState extends State<SecondaryButton>
height: 100, height: 100,
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.disabled color: widget.disabled
? widget.disableColor??Colors.grey ? widget.disableColor ?? Colors.grey
: widget.color ?? Theme.of(context).buttonColor), : widget.color ?? Theme.of(context).buttonColor),
), ),
), ),
@ -246,7 +250,7 @@ class _SecondaryButtonState extends State<SecondaryButton>
style: TextStyle( style: TextStyle(
color: widget.textColor, color: widget.textColor,
fontSize: widget.small ? 12.0 : 14.0, fontSize: widget.small ? 12.0 : 14.0,
// fontWeight: FontWeight.w800, fontWeight: widget.fontWeight,
fontFamily: projectViewModel.isArabic fontFamily: projectViewModel.isArabic
? 'Cairo' ? 'Cairo'
: 'WorkSans'), : 'WorkSans'),

Loading…
Cancel
Save