merge-update-with-lab-changes
mosazaid 4 years ago
parent acdd19eeed
commit c1f3d3cc1c

@ -62,6 +62,8 @@ class OrderPreviewService extends BaseService {
Future<Map> getShoppingCart() async { Future<Map> getShoppingCart() async {
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
if (customerId == null) return null;
Map<String, String> queryParams = {'shopping_cart_type': '1'}; Map<String, String> queryParams = {'shopping_cart_type': '1'};
dynamic localRes; dynamic localRes;
hasError = false; hasError = false;
@ -94,8 +96,8 @@ class OrderPreviewService extends BaseService {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body["shopping_cart_item"] = choppingCartObject; body["shopping_cart_item"] = choppingCartObject;
await baseAppClient.pharmacyPost("$GET_SHOPPING_CART$productId", isExternal: false, await baseAppClient.pharmacyPost("$GET_SHOPPING_CART$productId",
onSuccess: (response, statusCode) async { isExternal: false, onSuccess: (response, statusCode) async {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -112,8 +114,8 @@ class OrderPreviewService extends BaseService {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
await baseAppClient.pharmacyPost("$DELETE_SHOPPING_CART$productId", isExternal: false, await baseAppClient.pharmacyPost("$DELETE_SHOPPING_CART$productId",
onSuccess: (response, statusCode) async { isExternal: false, onSuccess: (response, statusCode) async {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -225,8 +227,9 @@ class OrderPreviewService extends BaseService {
body['order'] = orderBody; body['order'] = orderBody;
try { try {
await baseAppClient.pharmacyPost(ORDER_SHOPPING_CART, isExternal: false, isAllowAny: true, await baseAppClient.pharmacyPost(ORDER_SHOPPING_CART,
onSuccess: (response, statusCode) async { isExternal: false,
isAllowAny: true, onSuccess: (response, statusCode) async {
orderList.clear(); orderList.clear();
response['orders'].forEach((item) { response['orders'].forEach((item) {
orderList.add(OrderDetailModel.fromJson(item)); orderList.add(OrderDetailModel.fromJson(item));
@ -263,24 +266,22 @@ class OrderPreviewService extends BaseService {
} }
} }
Future<LatLng> getDriverLocation(dynamic driverId) async{ Future<LatLng> getDriverLocation(dynamic driverId) async {
Map<String, dynamic> jsonBody = Map(); Map<String, dynamic> jsonBody = Map();
jsonBody['DriverID'] = driverId; jsonBody['DriverID'] = driverId;
LatLng coordinates; LatLng coordinates;
await baseAppClient.post(DRIVER_LOCATION, await baseAppClient.post(DRIVER_LOCATION,
onSuccess: (response, statusCode) async { onSuccess: (response, statusCode) async {
if(statusCode == 200){ if (statusCode == 200) {
dynamic locationObject = response['PatientER_GetDriverLocationList'][0]; dynamic locationObject = response['PatientER_GetDriverLocationList'][0];
double lat = locationObject['Latitude']; double lat = locationObject['Latitude'];
double lon = locationObject['Longitude']; double lon = locationObject['Longitude'];
if(lat != null && lon != null){ if (lat != null && lon != null) {
coordinates = LatLng(lat,lon); coordinates = LatLng(lat, lon);
} }
} }
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {}, body: jsonBody);
}, body: jsonBody);
return coordinates; return coordinates;
} }

@ -9,6 +9,8 @@ import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart'; import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import '../../../locator.dart'; import '../../../locator.dart';
import '../base_view_model.dart'; import '../base_view_model.dart';
@ -17,8 +19,10 @@ class OrderPreviewViewModel extends BaseViewModel {
OrderPreviewService _orderService = locator<OrderPreviewService>(); OrderPreviewService _orderService = locator<OrderPreviewService>();
List<Addresses> get addresses => _orderService.addresses; List<Addresses> get addresses => _orderService.addresses;
LacumAccountInformation get lacumInformation => LacumAccountInformation get lacumInformation =>
_orderService.lacumInformation; _orderService.lacumInformation;
List<OrderDetailModel> get orderListModel => _orderService.orderList; List<OrderDetailModel> get orderListModel => _orderService.orderList;
PharmacyModuleViewModel pharmacyModuleViewModel = PharmacyModuleViewModel pharmacyModuleViewModel =
@ -38,24 +42,31 @@ class OrderPreviewViewModel extends BaseViewModel {
getShoppingCart(); getShoppingCart();
} }
} }
void update(){
notifyListeners();
}
Future getShoppingCart() async { Future getShoppingCart() async {
setState(ViewState.Busy); // setState(ViewState.Busy);
// GifLoaderDialogUtils.showMyDialog(
// locator<NavigationService>().navigatorKey.currentContext);
await _orderService.getShoppingCart().then((res) { await _orderService.getShoppingCart().then((res) {
_handleGetShoppingCartResponse(res); if (res != null) _handleGetShoppingCartResponse(res);
}); });
if (_orderService.hasError) { if (_orderService.hasError) {
error = _orderService.error; error = _orderService.error;
setState(ViewState.Error); // setState(ViewState.Error);
} else { } else {
if (paymentCheckoutData != null) { if (paymentCheckoutData != null) {
paymentCheckoutData.cartDataVisible = true; paymentCheckoutData.cartDataVisible = true;
} }
// GifLoaderDialogUtils.hideDialog(
// locator<NavigationService>().navigatorKey.currentContext);
setState(ViewState.Idle); setState(ViewState.Idle);
} }
} }
Future <ShoppingCartResponse> changeProductQuantity(ShoppingCart product) async { Future<ShoppingCartResponse> changeProductQuantity(
ShoppingCart product) async {
setState(ViewState.Busy); setState(ViewState.Busy);
var resp = await _orderService.changeProductQuantity(product.id, product); var resp = await _orderService.changeProductQuantity(product.id, product);
var object = _handleGetShoppingCartResponse(resp); var object = _handleGetShoppingCartResponse(resp);
@ -112,7 +123,8 @@ class OrderPreviewViewModel extends BaseViewModel {
res["shopping_carts"].forEach((item) { res["shopping_carts"].forEach((item) {
ShoppingCart shoppingCart = ShoppingCart.fromJson(item); ShoppingCart shoppingCart = ShoppingCart.fromJson(item);
cartResponse.shoppingCarts.add(shoppingCart); cartResponse.shoppingCarts.add(shoppingCart);
totalAdditionalShippingCharge += shoppingCart.product.additionalShippingCharge; totalAdditionalShippingCharge +=
shoppingCart.product.additionalShippingCharge;
}); });
return cartResponse; return cartResponse;
} }
@ -164,7 +176,8 @@ class OrderPreviewViewModel extends BaseViewModel {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.getLacumGroupInformation(); await _orderService.getLacumGroupInformation();
paymentCheckoutData.lacumInformation = _orderService.lacumGroupInformation; paymentCheckoutData.lacumInformation = _orderService.lacumGroupInformation;
paymentCheckoutData.usedLakumPoints = paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount; paymentCheckoutData.usedLakumPoints = paymentCheckoutData
.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount;
if (_orderService.hasError) { if (_orderService.hasError) {
error = _orderService.error; error = _orderService.error;
setState(ViewState.Error); setState(ViewState.Error);
@ -175,7 +188,9 @@ class OrderPreviewViewModel extends BaseViewModel {
getShippingOption() async { getShippingOption() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _orderService.getShippingOption(paymentCheckoutData.address).then((res) { await _orderService
.getShippingOption(paymentCheckoutData.address)
.then((res) {
paymentCheckoutData.shippingOption = ShippingOption.fromJson(res); paymentCheckoutData.shippingOption = ShippingOption.fromJson(res);
paymentCheckoutData.updateData(); paymentCheckoutData.updateData();
}); });
@ -191,7 +206,8 @@ class OrderPreviewViewModel extends BaseViewModel {
setState(ViewState.Busy); setState(ViewState.Busy);
await pharmacyModuleViewModel.generatePharmacyToken(); await pharmacyModuleViewModel.generatePharmacyToken();
await _orderService.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts); await _orderService.makeOrder(
paymentCheckoutData, cartResponse.shoppingCarts);
if (_orderService.hasError) { if (_orderService.hasError) {
error = _orderService.error; error = _orderService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -69,7 +69,6 @@ class _Login extends State<Login> {
nationalIDorFile.text = "2001273"; nationalIDorFile.text = "2001273";
mobileNumberController.text = mobileNo = "0555416043"; mobileNumberController.text = mobileNo = "0555416043";
}/* else { }/* else {
// TODO Mousa Sheeeloh
nationalIDorFile.text = "3376044"; nationalIDorFile.text = "3376044";
mobileNumberController.text = mobileNo = "0555416575"; mobileNumberController.text = mobileNo = "0555416575";
}*/ }*/

@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-preview.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-preview.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductOrderItem.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductOrderItem.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/GestureIconButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/GestureIconButton.dart';
@ -15,6 +16,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class CartOrderPage extends StatefulWidget { class CartOrderPage extends StatefulWidget {
@ -25,13 +27,14 @@ class CartOrderPage extends StatefulWidget {
class _CartOrderPageState extends State<CartOrderPage> { class _CartOrderPageState extends State<CartOrderPage> {
bool isLoading = true;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
Provider.of<OrderPreviewViewModel>(context, listen: false).getShoppingCart(); getData();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final mediaQuery = MediaQuery.of(context); final mediaQuery = MediaQuery.of(context);
@ -40,7 +43,9 @@ class _CartOrderPageState extends State<CartOrderPage> {
final height = mediaQuery.size.height - 60 - mediaQuery.padding.top; final height = mediaQuery.size.height - 60 - mediaQuery.padding.top;
AppScaffold appScaffold; AppScaffold appScaffold;
return NetworkBaseView( return NetworkBaseView(
baseViewModel: model, // baseViewModel: model,
isLoading: isLoading,
isLocalLoader: true,
child: AppScaffold( child: AppScaffold(
appBarTitle: TranslationBase.of(context).shoppingCart, appBarTitle: TranslationBase.of(context).shoppingCart,
isShowAppBar: true, isShowAppBar: true,
@ -245,6 +250,15 @@ class _CartOrderPageState extends State<CartOrderPage> {
), ),
); );
} }
void getData()async {
await Provider.of<OrderPreviewViewModel>(context, listen: false).getShoppingCart();
setState(() {
isLoading= false;
});
}
} }
class OrderBottomWidget extends StatefulWidget { class OrderBottomWidget extends StatefulWidget {

@ -31,33 +31,47 @@ class OrderPreviewPage extends StatefulWidget {
class _OrderPreviewPageState extends State<OrderPreviewPage> { class _OrderPreviewPageState extends State<OrderPreviewPage> {
MyInAppBrowser browser; MyInAppBrowser browser;
bool isLoading = true;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
Provider.of<OrderPreviewViewModel>(context, listen: false).getShoppingCart(); getData();
} }
void getData() async {
if (isLoading)
await Provider.of<OrderPreviewViewModel>(context, listen: false)
.getShoppingCart();
setState(() {
isLoading = false;
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final mediaQuery = MediaQuery.of(context); final mediaQuery = MediaQuery.of(context);
final height = mediaQuery.size.height - 60 - mediaQuery.padding.top; final height = mediaQuery.size.height - 60 - mediaQuery.padding.top;
OrderPreviewViewModel model = Provider.of(context); OrderPreviewViewModel model = Provider.of(context);
return NetworkBaseView( return AppScaffold(
child: AppScaffold(
appBarTitle: "${TranslationBase.of(context).checkOut}", appBarTitle: "${TranslationBase.of(context).checkOut}",
isShowAppBar: true, isShowAppBar: true,
isPharmacy: true, isPharmacy: true,
isShowDecPage: false, isShowDecPage: false,
isLoading: isLoading,
isLocalLoader: true,
backgroundColor: Colors.white, backgroundColor: Colors.white,
baseViewModel: model, // baseViewModel: model,
body: Container( body: Container(
color: Color(0xFFF1F1F1),
height: height * 0.90, height: height * 0.90,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
color: Color(0xFFF1F1F1), color: Color(0xFFF1F1F1),
child: Column( child: Column(
children: [ children: [
SelectAddressWidget(model,widget.addresses), SelectAddressWidget(model, widget.addresses),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -87,9 +101,7 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Texts(
TranslationBase TranslationBase.of(context).reviewOrder,
.of(context)
.reviewOrder,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.black, color: Colors.black,
@ -98,10 +110,8 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
model.cartResponse.shoppingCarts != null model.cartResponse.shoppingCarts != null
? model.cartResponse.shoppingCarts.length ? model.cartResponse.shoppingCarts.length
: 0, : 0,
(index) => (index) => ProductOrderPreviewItem(
ProductOrderPreviewItem( model.cartResponse.shoppingCarts[index]),
model.cartResponse
.shoppingCarts[index]),
), ),
], ],
), ),
@ -111,13 +121,10 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: model.cartResponse.subtotal != null child: model.cartResponse.subtotal != null
? Column( ? Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [ children: [
Texts( Texts(
TranslationBase TranslationBase.of(context).orderSummary,
.of(context)
.orderSummary,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.black, color: Colors.black,
@ -126,22 +133,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
height: 20, height: 20,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).subtotal}",
.of(context)
.subtotal}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).sar} ${(model.cartResponse.subtotal).toStringAsFixed(2)}",
.of(context)
.sar} ${(model.cartResponse.subtotal)
.toStringAsFixed(2)}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -156,23 +157,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
endIndent: 0, endIndent: 0,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).shipping}",
.of(context)
.shipping}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).sar} ${(model.totalAdditionalShippingCharge).toStringAsFixed(2)}",
.of(context)
.sar} ${(model
.totalAdditionalShippingCharge)
.toStringAsFixed(2)}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -187,23 +181,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
endIndent: 0, endIndent: 0,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).vat}",
.of(context)
.vat}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).sar} ${(model.cartResponse.subtotalVatAmount).toStringAsFixed(2)}",
.of(context)
.sar} ${(model.cartResponse
.subtotalVatAmount).toStringAsFixed(
2)}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -218,22 +205,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
endIndent: 0, endIndent: 0,
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Texts(
TranslationBase TranslationBase.of(context).total,
.of(context)
.total,
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).sar} ${(model.cartResponse.subtotal).toStringAsFixed(2)}",
.of(context)
.sar} ${(model.cartResponse.subtotal)
.toStringAsFixed(2)}",
fontSize: 14, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -253,14 +234,10 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
height: model.cartResponse.shoppingCarts != null height: model.cartResponse.shoppingCarts != null ? height * 0.10 : 0,
? height * 0.10
: 0,
color: Colors.white, color: Colors.white,
child: PaymentBottomWidget(model), child: PaymentBottomWidget(model),
), ),
),
baseViewModel: model,
); );
} }
} }
@ -308,8 +285,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<PaymentCheckoutData>( return Consumer<PaymentCheckoutData>(
builder: (ctx, paymentData, _) => builder: (ctx, paymentData, _) => Container(
Container(
color: Colors.white, color: Colors.white,
child: address == null child: address == null
? InkWell( ? InkWell(
@ -329,9 +305,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
padding: padding:
EdgeInsets.symmetric(vertical: 0, horizontal: 6), EdgeInsets.symmetric(vertical: 0, horizontal: 6),
child: Texts( child: Texts(
TranslationBase TranslationBase.of(context).selectAddress,
.of(context)
.selectAddress,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xff0000ff), color: Color(0xff0000ff),
@ -366,9 +340,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: 0, horizontal: 6), vertical: 0, horizontal: 6),
child: Texts( child: Texts(
TranslationBase TranslationBase.of(context).shippingAddress,
.of(context)
.shippingAddress,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.black, color: Colors.black,
@ -378,9 +350,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
InkWell( InkWell(
onTap: () => {_navigateToAddressPage()}, onTap: () => {_navigateToAddressPage()},
child: Texts( child: Texts(
TranslationBase TranslationBase.of(context).changeAddress,
.of(context)
.changeAddress,
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: Color(0xff0000ff), color: Color(0xff0000ff),
@ -400,9 +370,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
child: Texts( child: Texts(
"${address.address1} ${address.address2} ${address "${address.address1} ${address.address2} ${address.address2},, ${address.city}, ${address.country} ${address.zipPostalCode}",
.address2},, ${address.city}, ${address
.country} ${address.zipPostalCode}",
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: Colors.grey.shade500, color: Colors.grey.shade500,
@ -448,9 +416,7 @@ class _SelectAddressWidgetState extends State<SelectAddressWidget> {
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: 0, horizontal: 6), vertical: 0, horizontal: 6),
child: Texts( child: Texts(
"${TranslationBase "${TranslationBase.of(context).shipBy}",
.of(context)
.shipBy}",
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.black, color: Colors.black,
@ -493,8 +459,7 @@ class _SelectPaymentOptionWidgetState extends State<SelectPaymentOptionWidget> {
_navigateToPaymentOption() { _navigateToPaymentOption() {
Navigator.push(context, FadePage(page: PaymentMethodSelectPage())) Navigator.push(context, FadePage(page: PaymentMethodSelectPage()))
.then((result) => .then((result) => {
{
setState(() { setState(() {
if (result != null) { if (result != null) {
paymentOption = result; paymentOption = result;
@ -536,9 +501,7 @@ class _SelectPaymentOptionWidgetState extends State<SelectPaymentOptionWidget> {
padding: padding:
EdgeInsets.symmetric(vertical: 0, horizontal: 6), EdgeInsets.symmetric(vertical: 0, horizontal: 6),
child: Texts( child: Texts(
TranslationBase TranslationBase.of(context).selectPaymentOption,
.of(context)
.selectPaymentOption,
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xff0000ff), color: Color(0xff0000ff),
@ -592,9 +555,7 @@ class _SelectPaymentOptionWidgetState extends State<SelectPaymentOptionWidget> {
InkWell( InkWell(
onTap: () => {_navigateToPaymentOption()}, onTap: () => {_navigateToPaymentOption()},
child: Texts( child: Texts(
TranslationBase TranslationBase.of(context).changeMethod,
.of(context)
.changeMethod,
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: Color(0xff0000ff), color: Color(0xff0000ff),
@ -640,15 +601,12 @@ class _LakumWidgetState extends State<LakumWidget> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).lakumPoints}",
.of(context)
.lakumPoints}",
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
Texts( Texts(
"${widget.model.paymentCheckoutData.lacumInformation "${widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount}",
.lakumInquiryInformationObjVersion.pointsBalanceAmount}",
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
@ -663,9 +621,7 @@ class _LakumWidgetState extends State<LakumWidget> {
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).riyal}",
.of(context)
.riyal}",
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -760,9 +716,7 @@ class _LakumWidgetState extends State<LakumWidget> {
)), )),
), ),
child: Texts( child: Texts(
"${TranslationBase "${TranslationBase.of(context).use}",
.of(context)
.use}",
fontSize: 12, fontSize: 12,
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -794,8 +748,7 @@ class PaymentBottomWidget extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0),
child: Consumer<PaymentCheckoutData>( child: Consumer<PaymentCheckoutData>(
builder: (ctx, paymentData, _) => builder: (ctx, paymentData, _) => paymentData.cartDataVisible
paymentData.cartDataVisible
? Container( ? Container(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -810,10 +763,7 @@ class PaymentBottomWidget extends StatelessWidget {
child: Row( child: Row(
children: [ children: [
Texts( Texts(
"${TranslationBase "${TranslationBase.of(context).sar} ${(model.cartResponse.subtotal).toStringAsFixed(2)}",
.of(context)
.sar} ${(model.cartResponse.subtotal)
.toStringAsFixed(2)}",
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xff929295), color: Color(0xff929295),
@ -822,9 +772,7 @@ class PaymentBottomWidget extends StatelessWidget {
padding: padding:
const EdgeInsets.symmetric(horizontal: 4), const EdgeInsets.symmetric(horizontal: 4),
child: Texts( child: Texts(
"${TranslationBase "${TranslationBase.of(context).inclusiveVat}",
.of(context)
.inclusiveVat}",
fontSize: 8, fontSize: 8,
color: Color(0xff929295), color: Color(0xff929295),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -834,9 +782,7 @@ class PaymentBottomWidget extends StatelessWidget {
), ),
), ),
Texts( Texts(
"${model.cartResponse.quantityCount} ${TranslationBase "${model.cartResponse.quantityCount} ${TranslationBase.of(context).items}",
.of(context)
.items}",
fontSize: 10, fontSize: 10,
color: Colors.grey, color: Colors.grey,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -858,8 +804,10 @@ class PaymentBottomWidget extends StatelessWidget {
await model.makeOrder(); await model.makeOrder();
if (model.state == ViewState.Idle) { if (model.state == ViewState.Idle) {
AppToast.showSuccessToast( AppToast.showSuccessToast(
message: "Order has been placed successfully!!"); message:
openPayment(model.orderListModel[0], model.user); "Order has been placed successfully!!");
openPayment(
model.orderListModel[0], model.user);
} else { } else {
AppToast.showErrorToast(message: model.error); AppToast.showErrorToast(message: model.error);
} }
@ -870,9 +818,7 @@ class PaymentBottomWidget extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 16), padding: const EdgeInsets.symmetric(vertical: 16),
child: new Text( child: new Text(
"${TranslationBase "${TranslationBase.of(context).proceedPay}",
.of(context)
.proceedPay}",
style: new TextStyle( style: new TextStyle(
color: (paymentData.address != null && color: (paymentData.address != null &&
paymentData.paymentOption != null) paymentData.paymentOption != null)
@ -900,8 +846,10 @@ class PaymentBottomWidget extends StatelessWidget {
); );
} }
openPayment(OrderDetailModel order, openPayment(
AuthenticatedUser authenticatedUser,) { OrderDetailModel order,
AuthenticatedUser authenticatedUser,
) {
browser = new MyInAppBrowser( browser = new MyInAppBrowser(
onExitCallback: onBrowserExit, onLoadStartCallback: onBrowserLoadStart); onExitCallback: onBrowserExit, onLoadStartCallback: onBrowserLoadStart);
@ -912,8 +860,7 @@ class PaymentBottomWidget extends StatelessWidget {
order.id, order.id,
order.billingAddress.email, order.billingAddress.email,
order.customValuesXml, order.customValuesXml,
"${authenticatedUser.firstName} ${authenticatedUser "${authenticatedUser.firstName} ${authenticatedUser.middleName} ${authenticatedUser.lastName}",
.middleName} ${authenticatedUser.lastName}",
authenticatedUser.patientID, authenticatedUser.patientID,
authenticatedUser, authenticatedUser,
browser); browser);

@ -57,6 +57,7 @@ class _PharmacyPageState extends State<PharmacyPage> {
onModelReady: (model) async { onModelReady: (model) async {
await model.getSavedLanguage(); await model.getSavedLanguage();
await model.getBannerList(); await model.getBannerList();
if(model.isLogin)
await orderPreviewViewModel.getShoppingCart(); await orderPreviewViewModel.getShoppingCart();
}, },
allowAny: true, allowAny: true,

@ -58,6 +58,7 @@ class AppScaffold extends StatelessWidget {
final List<Widget> appBarIcons; final List<Widget> appBarIcons;
final List<ImagesInfo> imagesInfo; final List<ImagesInfo> imagesInfo;
final bool isHelp; final bool isHelp;
final bool isLocalLoader;
AuthenticatedUserObject authenticatedUserObject = AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>(); locator<AuthenticatedUserObject>();
@ -89,7 +90,7 @@ class AppScaffold extends StatelessWidget {
this.showHomeAppBarIcon = true, this.showHomeAppBarIcon = true,
this.imagesInfo, this.imagesInfo,
appBar, appBar,
this.customAppBar}); this.customAppBar, this.isLocalLoader= false});
AppScaffold setOnAppBarCartClick(VoidCallback onClick) { AppScaffold setOnAppBarCartClick(VoidCallback onClick) {
_onCartClick = onClick; _onCartClick = onClick;
@ -146,7 +147,17 @@ class AppScaffold extends StatelessWidget {
buildBodyWidget(context) { buildBodyWidget(context) {
return Stack( return Stack(
children: <Widget>[body, isHelp == true ? RobotIcon() : Container()]); children: <Widget>[
Center(
child:isLoading? CircularProgressIndicator(
backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>(
Colors.grey[500],
),
):body),
isHelp == true ? RobotIcon() : Container()]);
} }
} }

@ -10,8 +10,9 @@ class NetworkBaseView extends StatefulWidget {
final BaseViewModel baseViewModel; final BaseViewModel baseViewModel;
final Widget child; final Widget child;
final bool isLocalLoader; final bool isLocalLoader;
final bool isLoading;
NetworkBaseView({Key key, this.baseViewModel, this.child, this.isLocalLoader = false}); NetworkBaseView({Key key, this.baseViewModel, this.child, this.isLocalLoader = false, this.isLoading});
@override @override
_NetworkBaseViewState createState() => _NetworkBaseViewState(); _NetworkBaseViewState createState() => _NetworkBaseViewState();
@ -31,7 +32,14 @@ class _NetworkBaseViewState extends State<NetworkBaseView>{
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
child: buildBaseViewWidget(), child: (widget.baseViewModel!=null ) ?buildBaseViewWidget():Center(
child:widget.isLoading? CircularProgressIndicator(
backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>(
Colors.grey[500],
),
):widget.child,
) ,
); );
} }

Loading…
Cancel
Save