From 7f15522f674b28d96cb5d6cd5a9996bf827921d1 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 2 Sep 2020 16:12:12 +0300 Subject: [PATCH 1/4] Improvement on the Ui --- lib/config/localized_values.dart | 39 +++++++------------ lib/pages/dashboard/dashboard_screen.dart | 12 +++--- lib/pages/delivery/information_page.dart | 2 +- lib/uitl/translations_delegate_base.dart | 20 ++++++++++ .../bottom_sheet/action_sheet_button.dart | 24 +++++++----- .../bottom_sheet/custom_bottom_sheet.dart | 2 +- lib/widgets/buttons/secondary_button.dart | 21 +++++++--- .../data_display/dialog/custom_dialog.dart | 15 +++++-- lib/widgets/others/app_scaffold_widget.dart | 17 ++++---- 9 files changed, 90 insertions(+), 62 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 81a01c6..d653800 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -58,29 +58,18 @@ const Map> localizedValues = { 'ar': 'رسالة نصية' }, 'packageContent': { - 'en': 'Package Content', - 'ar': 'محتوى الحزمة' - }, - 'payment': { - 'en': 'Payment', - 'ar': 'دفع' - }, - 'delivryTime': { - 'en': 'Delivery Time', - 'ar': 'وقت التوصيل' - }, - 'clientReached': { - 'en': 'Client Reached', - 'ar': 'الوصول الى العميل' - }, - 'addNoteBtn': { - 'en': 'Add Note', - 'ar': 'اضافة ملاحظة' - }, - 'nextDelivery': { - 'en': 'Next Delivery', - 'ar': 'الشحنة التالية' - } - - + 'en': 'Package Content', 'ar': 'محتوى الحزمة'}, + 'payment': {'en': 'Payment', 'ar': 'دفع'}, + 'delivryTime': {'en': 'Delivery Time', 'ar': 'وقت التوصيل'}, + 'clientReached': {'en': 'Client Reached', 'ar': 'الوصول الى العميل'}, + 'addNoteBtn': {'en': 'Add Note', 'ar': 'اضافة ملاحظة'}, + 'nextDelivery': {'en': 'Next Delivery', 'ar': 'الشحنة التالية'}, + 'delivered': {'en': 'Delivered', 'ar': 'وصل'}, + 'deliveredAccepted': {'en': 'Delivered/Accepted', 'ar': 'تم التوصيل/مقبول'}, + 'deliveredRejected': {'en': 'Delivered/Rejected', 'ar': 'تم التوصيل/مرفوض'}, + 'canceled': {'en': 'Canceled', 'ar': 'الغى'}, + 'selectAction': {'en': 'Select Action', 'ar': 'الرجاء الاختيار'}, + 'youHaveSelected': {'en': 'You have selected:', 'ar': 'لقد قمت باختيار:'}, + 'confirm': {'en': 'Confirm', 'ar': 'تأكيد'}, + 'areYouSure': {'en': 'Are you sure?', 'ar': 'هل أنت واثق؟'}, }; diff --git a/lib/pages/dashboard/dashboard_screen.dart b/lib/pages/dashboard/dashboard_screen.dart index 96f0ffb..33781a2 100644 --- a/lib/pages/dashboard/dashboard_screen.dart +++ b/lib/pages/dashboard/dashboard_screen.dart @@ -10,9 +10,9 @@ import 'package:driverapp/widgets/others/network_base_view.dart'; import 'package:driverapp/widgets/others/rounded_container.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; import '../base/base_view.dart'; -import 'package:driverapp/config/shared_pref_kay.dart'; class DashboardScreen extends StatefulWidget { @override @@ -257,11 +257,11 @@ class _DashboardScreenState extends State { height: MediaQuery.of(context).size.height * 0.18, width: MediaQuery.of(context).size.width * 0.50, decoration: BoxDecoration( - borderRadius: BorderRadius.circular(15.0), - gradient: LinearGradient(colors: [ - Color(0xff48C0BC), - Color(0xff17AFB8) - ])), + borderRadius: BorderRadius.circular(15.0), + gradient: LinearGradient( + colors: [Hexcolor("#45B7AE"), Hexcolor("#119FA9")], + ), + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ diff --git a/lib/pages/delivery/information_page.dart b/lib/pages/delivery/information_page.dart index 96fdfe7..b85ad6c 100644 --- a/lib/pages/delivery/information_page.dart +++ b/lib/pages/delivery/information_page.dart @@ -1 +1 @@ -import 'package:driverapp/app-icons/driver_app_icons.dart'; import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/model/orders/pending_orders_res_model.dart'; import 'package:driverapp/core/model/orders/update_order_status_request_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/pages/base/base_view.dart'; import 'package:driverapp/pages/delivery/delivery_confirmed_page.dart'; import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/widgets/bottom_sheet/action_sheet_button.dart'; import 'package:driverapp/widgets/bottom_sheet/custom_bottom_sheet.dart'; import 'package:driverapp/widgets/buttons/secondary_button.dart'; import 'package:driverapp/widgets/data_display/dialog/custom_dialog.dart'; import 'package:driverapp/widgets/data_display/text.dart'; import 'package:driverapp/widgets/delivery/customer_brief_card.dart'; import 'package:driverapp/widgets/delivery/delivery_action_button.dart'; import 'package:driverapp/widgets/delivery/package_content.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import '../../uitl/translations_delegate_base.dart'; import '../../widgets/others/app_scaffold_widget.dart'; class InformationPage extends StatelessWidget { final PendingOrdersRes item; int orderStatus; InformationPage(this.item); @override Widget build(BuildContext context) { return BaseView( builder: (_, model, w) => AppScaffold( isShowAppBar: true, appBarColor: Theme.of(context).primaryColor, arrowColor: Colors.white, titleColor: Colors.white, appBarTitle: TranslationBase.of(context).deliveryInfo, body: Container( color: Theme.of(context).primaryColor, child: Container( color: Theme.of(context).primaryColor, child: ListView( children: [ Column( children: [ Stack( children: [ Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.width, ), Container( width: MediaQuery.of(context).size.width * 1, height: MediaQuery.of(context).size.width * 1.5, margin: EdgeInsets.only( top: MediaQuery.of(context).size.width * 0.23, ), decoration: BoxDecoration( color: Theme.of(context).scaffoldBackgroundColor, borderRadius: BorderRadius.only( topLeft: Radius.circular(45), topRight: Radius.circular(45)), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: MediaQuery.of(context).size.width * 0.53, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ DeliveryInfoButton( btnColor: Color(0xffED1C24), btnIcon: Icon( Icons.near_me, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).location, btnFunction: () {}, ), DeliveryInfoButton( btnColor: Color(0xFF61B260), btnIcon: Icon( Icons.whatshot, size: 30, color: Colors.white, ), btnName: 'Whatsapp', btnFunction: () {}, ), DeliveryInfoButton( btnColor: Color(0xFFFCB657), btnIcon: Icon( Icons.mail_outline, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).sms, btnFunction: () {}, ), DeliveryInfoButton( btnColor: Theme.of(context).primaryColor, btnIcon: Icon( Icons.phone, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).call, btnFunction: () {}, ), ], ), SizedBox( height: MediaQuery.of(context).size.width * 0.1, ), Container( margin: EdgeInsets.only( left: MediaQuery.of(context).size.width * 0.05, right: MediaQuery.of(context).size.width * 0.05, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 8), child: Text( TranslationBase.of(context) .packageContent, style: TextStyle( fontWeight: FontWeight.w900, fontSize: 20), ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.05, ), Padding( padding: const EdgeInsets.only(left: 10), child: Column( children: List.generate( item.itemsQuantitiesList.length, (index) { return packageContent( packageName: item .itemsQuantitiesList[index] .itemName .toString(), packageCount: item .itemsQuantitiesList[index] .quantity .toString(), ); }), ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.01, ), ], ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.1, ), Container( margin: EdgeInsets.all(10), child: SecondaryButton( label: TranslationBase.of(context).clientReached, onTap: () { model.showBottomSheet(); }, ), ), ], ), ), CustomerBriefCard( itemId: item.patientID, customerFirstName: item.firstName, customerLastName: item.lastName, mobileNo: item.mobileNumber, totalPayment: item.amount, deliveryTime: item.orderCreatedOn), ], ), ], ), ], ), ), ), bottomSheet: !model.isBottomSheetAppear ? Container( width: 0, height: 0, ) : CustomBottomSheet(children: [ SizedBox( height: 10, ), Center( child: Texts( 'Select Action', color: Colors.black, fontSize: 22, ), ), SizedBox( height: 10, ), FractionallySizedBox( widthFactor: 0.9, child: Column( children: [ SizedBox( height: 3, child: Container( color: Hexcolor("#D5D5D5"), ), ), SizedBox( height: 6, ), ActionSheetButton( label: "Delivered", icon: DriverApp.deliverd_icon, onTap: () { selectAction(context, 1, model); }, ), SizedBox( height: 6, ), ActionSheetButton( label: "Not Available", icon: DriverApp.not_available, onTap: () { selectAction(context, 2, model); }, ), SizedBox( height: 6, ), ActionSheetButton( label: "Rejected", icon: DriverApp.rejected_icon, onTap: () { selectAction(context, 3, model); }, ), SizedBox( height: 6, ), ActionSheetButton( label: "Not Reachable", icon: DriverApp.not_reachable_icon, onTap: () { selectAction(context, 4, model); }, ), ], )), ]), ), ); } selectAction(BuildContext context, orderStatus, OrdersViewModel model) { String orderStatusText; this.orderStatus = orderStatus; switch (orderStatus) { case 1: orderStatusText = "Delivered"; break; case 2: orderStatusText = "Not Available"; break; case 3: orderStatusText = "Rejected"; break; case 4: orderStatusText = "Not Reachable"; break; } showDialog( context: context, builder: (BuildContext context) { return CustomDialog( orderStatusText: orderStatusText, callService: () { updateOrderStatus(context, model); }, model: model,); }); } updateOrderStatus(BuildContext context, OrdersViewModel model) async { UpdateOrderStatusRequestModel updateOrderStatusRequestModel = UpdateOrderStatusRequestModel(deliveryOrderID: item.orderID, deliveryOrderStatus: orderStatus, rejectionReason: "NO Reason", cancleReason: ""); await model.updateOrderStatus(updateOrderStatusRequestModel); if (model.state == ViewState.ErrorLocal) { Utils.showErrorToast(model.error); Navigator.of(context).pop(); model.hideBottomSheet(); } else { Navigator.of(context).pop(); model.hideBottomSheet(); Navigator.push( context, MaterialPageRoute( builder: (context) => DeliveryConfirmedPage(item), ), ); } } } \ No newline at end of file +import 'package:driverapp/app-icons/driver_app_icons.dart'; import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/model/orders/pending_orders_res_model.dart'; import 'package:driverapp/core/model/orders/update_order_status_request_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/pages/base/base_view.dart'; import 'package:driverapp/pages/delivery/delivery_confirmed_page.dart'; import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/widgets/bottom_sheet/action_sheet_button.dart'; import 'package:driverapp/widgets/bottom_sheet/custom_bottom_sheet.dart'; import 'package:driverapp/widgets/buttons/secondary_button.dart'; import 'package:driverapp/widgets/data_display/dialog/custom_dialog.dart'; import 'package:driverapp/widgets/data_display/text.dart'; import 'package:driverapp/widgets/delivery/customer_brief_card.dart'; import 'package:driverapp/widgets/delivery/delivery_action_button.dart'; import 'package:driverapp/widgets/delivery/package_content.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import '../../uitl/translations_delegate_base.dart'; import '../../widgets/others/app_scaffold_widget.dart'; class InformationPage extends StatelessWidget { final PendingOrdersRes item; int orderStatus; InformationPage(this.item); @override Widget build(BuildContext context) { return BaseView( builder: (_, model, w) => AppScaffold( isShowAppBar: true, appBarColor: Theme.of(context).primaryColor, arrowColor: Colors.white, titleColor: Colors.white, appBarTitle: TranslationBase.of(context).deliveryInfo, body: Container( color: Theme.of(context).primaryColor, child: Container( color: Theme.of(context).primaryColor, child: ListView( children: [ Column( children: [ Stack( children: [ Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.width, ), Container( width: MediaQuery.of(context).size.width * 1, height: MediaQuery.of(context).size.width * 1.5, margin: EdgeInsets.only( top: MediaQuery.of(context).size.width * 0.23, ), decoration: BoxDecoration( color: Theme.of(context).scaffoldBackgroundColor, borderRadius: BorderRadius.only( topLeft: Radius.circular(45), topRight: Radius.circular(45)), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: MediaQuery.of(context).size.width * 0.53, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ DeliveryInfoButton( btnColor: Color(0xffED1C24), btnIcon: Icon( Icons.near_me, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).location, btnFunction: () {}, ), DeliveryInfoButton( btnColor: Color(0xFF61B260), btnIcon: Icon( Icons.whatshot, size: 30, color: Colors.white, ), btnName: 'Whatsapp', btnFunction: () {}, ), DeliveryInfoButton( btnColor: Color(0xFFFCB657), btnIcon: Icon( Icons.mail_outline, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).sms, btnFunction: () {}, ), DeliveryInfoButton( btnColor: Theme.of(context).primaryColor, btnIcon: Icon( Icons.phone, size: 30, color: Colors.white, ), btnName: TranslationBase.of(context).call, btnFunction: () {}, ), ], ), SizedBox( height: MediaQuery.of(context).size.width * 0.1, ), Container( margin: EdgeInsets.only( left: MediaQuery.of(context).size.width * 0.05, right: MediaQuery.of(context).size.width * 0.05, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 8), child: Text( TranslationBase.of(context) .packageContent, style: TextStyle( fontWeight: FontWeight.w900, fontSize: 20), ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.05, ), Padding( padding: const EdgeInsets.only(left: 10), child: Column( children: List.generate( item.itemsQuantitiesList.length, (index) { return packageContent( packageName: item .itemsQuantitiesList[index] .itemName .toString(), packageCount: item .itemsQuantitiesList[index] .quantity .toString(), ); }), ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.01, ), ], ), ), SizedBox( height: MediaQuery.of(context).size.width * 0.1, ), Container( margin: EdgeInsets.all(10), child: SecondaryButton( label: TranslationBase.of(context).clientReached, onTap: () { model.showBottomSheet(); }, ), ), ], ), ), CustomerBriefCard( itemId: item.patientID, customerFirstName: item.firstName, customerLastName: item.lastName, mobileNo: item.mobileNumber, totalPayment: item.amount, deliveryTime: item.orderCreatedOn), ], ), ], ), ], ), ), ), bottomSheet: !model.isBottomSheetAppear ? Container( width: 0, height: 0, ) : CustomBottomSheet(children: [ SizedBox( height: 10, ), Center( child: Texts( TranslationBase.of(context).selectAction, color: Colors.black, fontSize: 22, ), ), SizedBox( height: 10, ), FractionallySizedBox( widthFactor: 0.9, child: Column( children: [ SizedBox( height: 3, child: Container( color: Hexcolor("#D5D5D5"), ), ), SizedBox( height: 15, ), ActionSheetButton( label: TranslationBase .of(context) .delivered, icon: DriverApp.deliverd_icon, onTap: () { selectAction(context, 3, model); }, ), SizedBox( height: 15 ), ActionSheetButton( label: TranslationBase .of(context) .deliveredAccepted, icon: DriverApp.not_available, onTap: () { selectAction(context, 4, model); }, ), SizedBox( height: 15 ), ActionSheetButton( label: TranslationBase .of(context) .deliveredRejected, icon: DriverApp.rejected_icon, onTap: () { selectAction(context, 5, model); }, ), SizedBox( height: 15 ), ActionSheetButton( label: TranslationBase .of(context) .canceled, icon: DriverApp.not_reachable_icon, onTap: () { selectAction(context, 6, model); }, ), SizedBox( height: 15 ), ], )), ]), ), ); } selectAction(BuildContext context, orderStatus, OrdersViewModel model) { String orderStatusText; this.orderStatus = orderStatus; switch (orderStatus) { case 3: orderStatusText = TranslationBase .of(context) .delivered; break; case 4: orderStatusText = TranslationBase .of(context) .deliveredAccepted; break; case 5: orderStatusText = TranslationBase .of(context) .deliveredRejected; break; case 6: orderStatusText = TranslationBase .of(context) .canceled; break; } showDialog( context: context, builder: (BuildContext context) { return CustomDialog( orderStatusText: orderStatusText, callService: () { updateOrderStatus(context, model); }, model: model,); }); } updateOrderStatus(BuildContext context, OrdersViewModel model) async { UpdateOrderStatusRequestModel updateOrderStatusRequestModel = UpdateOrderStatusRequestModel(deliveryOrderID: item.orderID, deliveryOrderStatus: orderStatus, rejectionReason: "NO Reason", cancleReason: ""); await model.updateOrderStatus(updateOrderStatusRequestModel); if (model.state == ViewState.ErrorLocal) { Utils.showErrorToast(model.error); Navigator.of(context).pop(); model.hideBottomSheet(); } else { Navigator.of(context).pop(); model.hideBottomSheet(); Navigator.push( context, MaterialPageRoute( builder: (context) => DeliveryConfirmedPage(item), ), ); } } } \ No newline at end of file diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 0e07425..9f70074 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -103,6 +103,26 @@ class TranslationBase { String get confirmationSent => localizedValues['confirmationSent'][locale.languageCode]; + + String get delivered => localizedValues['delivered'][locale.languageCode]; + + String get deliveredAccepted => + localizedValues['deliveredAccepted'][locale.languageCode]; + + String get deliveredRejected => + localizedValues['deliveredRejected'][locale.languageCode]; + + String get canceled => localizedValues['canceled'][locale.languageCode]; + + String get selectAction => + localizedValues['selectAction'][locale.languageCode]; + + String get youHaveSelected => + localizedValues['youHaveSelected'][locale.languageCode]; + + String get confirm => localizedValues['confirm'][locale.languageCode]; + + String get areYouSure => localizedValues['areYouSure'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/bottom_sheet/action_sheet_button.dart b/lib/widgets/bottom_sheet/action_sheet_button.dart index 23d7e98..f7d53f5 100644 --- a/lib/widgets/bottom_sheet/action_sheet_button.dart +++ b/lib/widgets/bottom_sheet/action_sheet_button.dart @@ -15,16 +15,18 @@ class ActionSheetButton extends StatelessWidget { onTap: onTap, child: Container( height: SizeConfig.isMobilePortrait - ? MediaQuery.of(context).size.height * 0.07 + ? MediaQuery.of(context).size.height * 0.08 : MediaQuery.of(context).size.height * 0.14, - decoration: BoxDecoration( - border: Border.all(color: Colors.blue), - borderRadius: BorderRadius.circular(6), - gradient: LinearGradient(colors: [ - Hexcolor('#DCE6E8'), - Hexcolor('#FFFFFF'), - ], begin: Alignment.topLeft), - ), + decoration: BoxDecoration(boxShadow: [ + BoxShadow( + color: Hexcolor("#DBE5E6"), + spreadRadius: 15, + blurRadius: 15, + offset: Offset(0, 7), + + // changes position of shadow + ), + ], borderRadius: BorderRadius.circular(15), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ @@ -61,7 +63,9 @@ class ActionSheetButton extends StatelessWidget { padding: EdgeInsets.only(top: 5.0), child: Text( label, - style: TextStyle(fontSize: 18.0), + style: TextStyle(fontSize: 22.0, + fontFamily: "Metropolis-Bold", + color: Hexcolor("##1A1818")), ), ) ], diff --git a/lib/widgets/bottom_sheet/custom_bottom_sheet.dart b/lib/widgets/bottom_sheet/custom_bottom_sheet.dart index 8131149..aa644d9 100644 --- a/lib/widgets/bottom_sheet/custom_bottom_sheet.dart +++ b/lib/widgets/bottom_sheet/custom_bottom_sheet.dart @@ -12,7 +12,7 @@ class CustomBottomSheet extends StatelessWidget { return Container( padding: EdgeInsets.symmetric(vertical: 12.0), decoration: BoxDecoration( - color: Hexcolor("#FEFEFE"), + color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(30.0), topRight: Radius.circular(30.0), diff --git a/lib/widgets/buttons/secondary_button.dart b/lib/widgets/buttons/secondary_button.dart index dc88f3d..4aa11f2 100644 --- a/lib/widgets/buttons/secondary_button.dart +++ b/lib/widgets/buttons/secondary_button.dart @@ -191,8 +191,17 @@ class _SecondaryButtonState extends State height: MediaQuery.of(context).size.width * 2.2, decoration: BoxDecoration( shape: BoxShape.circle, - color: widget.color != null ? widget.color : Hexcolor( - "#1CA4AA"), + gradient: widget.color != null + ? null + : LinearGradient( + colors: [ + Hexcolor("#45B7AE"), + Hexcolor("#119FA9") + ], + ), + color: widget.color != null + ? widget.color + : Hexcolor("#000000"), ), ), ), @@ -201,10 +210,10 @@ class _SecondaryButtonState extends State padding: widget.iconOnly ? EdgeInsets.symmetric(vertical: 4.0, horizontal: 5.0) : EdgeInsets.only( - top: widget.small ? 8.0 : 12.0, - bottom: widget.small ? 6.0 : 12.0, - left: 18.0, - right: 18.0), + top: widget.small ? 8.0 : 16.0, + bottom: widget.small ? 6.0 : 16.0, + left: 18.0, + right: 18.0), child: Stack( children: [ Positioned( diff --git a/lib/widgets/data_display/dialog/custom_dialog.dart b/lib/widgets/data_display/dialog/custom_dialog.dart index 88ad467..64315c6 100644 --- a/lib/widgets/data_display/dialog/custom_dialog.dart +++ b/lib/widgets/data_display/dialog/custom_dialog.dart @@ -1,6 +1,7 @@ import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/pages/base/base_view.dart'; +import 'package:driverapp/uitl/translations_delegate_base.dart'; import 'package:driverapp/widgets/buttons/secondary_button.dart'; import 'package:flutter/material.dart'; @@ -34,7 +35,7 @@ class CustomDialog extends StatelessWidget { height: 30, ), Text( - 'you have selected:', + TranslationBase.of(context).youHaveSelected, style: TextStyle( fontWeight: FontWeight.w500, color: Colors.black, @@ -54,7 +55,9 @@ class CustomDialog extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.end, children: [ Texts( - 'Are you sure?', + TranslationBase + .of(context) + .areYouSure, color: Colors.black, fontSize: 20, ), @@ -62,7 +65,9 @@ class CustomDialog extends StatelessWidget { height: 10, ), SecondaryButton( - label: "Confirm", + label: TranslationBase + .of(context) + .confirm, loading: model.state == ViewState.BusyLocal, onTap: () { model.setState(ViewState.BusyLocal); @@ -73,7 +78,9 @@ class CustomDialog extends StatelessWidget { height: 10, ), SecondaryButton( - label: "Cancel", + label: TranslationBase + .of(context) + .canceled, onTap: () { model.hideBottomSheet(); Navigator.of(context).pop(); diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index 98a990c..b4cdec7 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -33,17 +33,16 @@ class AppScaffold extends StatelessWidget { Widget build(BuildContext context) { AppGlobal.context = context; return SafeArea( + bottom: false, child: Scaffold( - backgroundColor: appBarColor ?? Theme.of(context).scaffoldBackgroundColor, + backgroundColor: + appBarColor ?? Theme.of(context).scaffoldBackgroundColor, appBar: isShowAppBar ? AppBar( - elevation: 0, - backgroundColor: Theme - .of(context) - .appBarTheme - .color, - textTheme: TextTheme( - headline6: TextStyle( + elevation: 0, + backgroundColor: Theme.of(context).appBarTheme.color, + textTheme: TextTheme( + headline6: TextStyle( color: titleColor ?? Colors.white, fontWeight: FontWeight.bold), ), @@ -80,6 +79,6 @@ class AppScaffold extends StatelessWidget { } buildBodyWidget() { - return Stack(children: [body, buildAppLoaderWidget(isLoading)]); + return body; } } From 4f93f8b0dbed87d6233df1771cb09ebfd32c3079 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 2 Sep 2020 16:58:13 +0300 Subject: [PATCH 2/4] Finish QR code --- lib/core/service/orders_service.dart | 4 +--- lib/core/viewModels/orders_view_model.dart | 6 +++--- lib/pages/dashboard/dashboard_screen.dart | 5 ++++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/core/service/orders_service.dart b/lib/core/service/orders_service.dart index 5af7599..8b9ebee 100644 --- a/lib/core/service/orders_service.dart +++ b/lib/core/service/orders_service.dart @@ -39,9 +39,7 @@ class OrdersService extends BaseService { } } - Future insertOrder() async { - ScanQrRequestModel _scanQrRequestModel = - ScanQrRequestModel(deliveryOrderID: 1200, groupID: 0); + Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async { hasError = false; try { await baseAppClient.post(SCAN_QR, diff --git a/lib/core/viewModels/orders_view_model.dart b/lib/core/viewModels/orders_view_model.dart index b526f16..9a367ad 100644 --- a/lib/core/viewModels/orders_view_model.dart +++ b/lib/core/viewModels/orders_view_model.dart @@ -1,6 +1,7 @@ import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/model/orders/pending_orders_res_model.dart'; import 'package:driverapp/core/model/orders/update_order_status_request_model.dart'; +import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart'; import 'package:driverapp/core/service/orders_service.dart'; import '../../locator.dart'; @@ -22,9 +23,9 @@ class OrdersViewModel extends BaseViewModel { setState(ViewState.Idle); } - Future insertOrder() async { + Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async { setState(ViewState.ErrorLocal); - await _OrdersService.insertOrder(); + await _OrdersService.insertOrder(_scanQrRequestModel); if (_OrdersService.hasError) { error = _OrdersService.error; setState(ViewState.ErrorLocal); @@ -32,7 +33,6 @@ class OrdersViewModel extends BaseViewModel { setState(ViewState.Idle); } - Future updateOrderStatus( UpdateOrderStatusRequestModel updateOrderStatusRequestModel) async { setState(ViewState.BusyLocal); diff --git a/lib/pages/dashboard/dashboard_screen.dart b/lib/pages/dashboard/dashboard_screen.dart index 33781a2..22d28e1 100644 --- a/lib/pages/dashboard/dashboard_screen.dart +++ b/lib/pages/dashboard/dashboard_screen.dart @@ -1,5 +1,6 @@ import 'package:barcode_scan/platform_wrapper.dart'; import 'package:driverapp/core/enum/viewstate.dart'; +import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/pages/delivery/information_page.dart'; import 'package:driverapp/pages/orders/pending_orders_page.dart'; @@ -493,8 +494,10 @@ class _DashboardScreenState extends State { var result = await BarcodeScanner.scan(); // if (result.rawContent == "") { List listOfParams = result.rawContent.split(','); + ScanQrRequestModel _scanQrRequestModel = ScanQrRequestModel( + deliveryOrderID: int.parse(listOfParams[0]), groupID: 0); String patientType = "1"; - await model.insertOrder(); + await model.insertOrder(_scanQrRequestModel); if (model.state == ViewState.ErrorLocal) { Utils.showErrorToast(model.error); } else { From 27a070f77819769ccf1ec64ff65346eb19fbe1e3 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Wed, 2 Sep 2020 17:02:40 +0300 Subject: [PATCH 3/4] dashboard updates --- lib/config/localized_values.dart | 68 +++------ lib/core/viewModels/base_view_model.dart | 2 +- lib/pages/dashboard/dashboard_screen.dart | 170 ++++++++++++---------- lib/pages/delivery/information_page.dart | 169 ++++++++------------- lib/pages/orders/pending_orders_page.dart | 76 +++++----- lib/uitl/translations_delegate_base.dart | 4 + 6 files changed, 223 insertions(+), 266 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 81a01c6..e8875ac 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -28,59 +28,37 @@ const Map> localizedValues = { }, 'forgotPassword': {'en': 'Forgot Password?', 'ar': 'هل نسيت كلمة المرور ؟'}, 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'}, - 'haveGreatDay': {'en': 'have a great day ,', 'ar': 'أتمنى لك يوما جميلا '}, + 'haveGreatDay': {'en': 'have a great day,', 'ar': 'أتمنى لك يوما جميلا '}, 'youHave': {'en': 'You Have', 'ar': 'يوجد لديك'}, - 'deliveredPackages': {'en': 'Delivered Packages', 'ar': 'الطرود المسلمة'}, + 'deliveredPackages': {'en': 'Delivered \nPackages', 'ar': 'الطرود\n المسلمة'}, 'seeAll': {'en': 'See All', 'ar': 'اظهار الكل'}, - 'nearestDropOffs': {'en': 'nearest drop-offs', 'ar': 'أقرب نقطة إنزال'}, + 'nearestDropOffs': {'en': 'Nearest Drop-Offs', 'ar': 'أقرب نقطة إنزال'}, 'undeliveredPackages': { - 'en': 'Undelivered Packages', - 'ar': 'الطرود التي لم يتم تسليمها' - }, - 'deliveryInfo': { - 'en': 'Delivery information', - 'ar': 'معلومات الشحنة' + 'en': 'Undelivered\nPackages', + 'ar': 'الطرود التي\n لم يتم تسليمها' }, + 'deliveryInfo': {'en': 'Delivery information', 'ar': 'معلومات الشحنة'}, 'confirmationSent': { 'en': 'Confirmation email and SMS has been sent', 'ar': 'تم إرسال التأكيد للبرييد الإلكتروني والرسائل النصية القصيرة' }, - 'location': { - 'en': 'Location', - 'ar': 'الموقع' - }, - 'call': { - 'en': 'Call', - 'ar': 'اتصال' - }, - 'sms': { - 'en': 'SMS', - 'ar': 'رسالة نصية' - }, - 'packageContent': { - 'en': 'Package Content', - 'ar': 'محتوى الحزمة' - }, - 'payment': { - 'en': 'Payment', - 'ar': 'دفع' - }, - 'delivryTime': { - 'en': 'Delivery Time', - 'ar': 'وقت التوصيل' - }, - 'clientReached': { - 'en': 'Client Reached', - 'ar': 'الوصول الى العميل' + 'location': {'en': 'Location', 'ar': 'الموقع'}, + 'call': {'en': 'Call', 'ar': 'اتصال'}, + 'sms': {'en': 'SMS', 'ar': 'رسالة نصية'}, + 'packageContent': {'en': 'Package Content', 'ar': 'محتوى الحزمة'}, + 'payment': {'en': 'Payment', 'ar': 'دفع'}, + 'delivryTime': {'en': 'Delivery Time', 'ar': 'وقت التوصيل'}, + 'clientReached': {'en': 'Client Reached', 'ar': 'الوصول الى العميل'}, + 'addNoteBtn': {'en': 'Add Note', 'ar': 'اضافة ملاحظة'}, + 'nextDelivery': {'en': 'Next Delivery', 'ar': 'الشحنة التالية'}, + 'scan': {'en': 'SCAN', 'ar': 'مسح'}, + 'away': {'en': 'away', 'ar': 'مسح'}, + 'yourDeliveryQue': { + 'en': 'Your Delivery Que', + 'ar': 'قائمة التسليم الخاصة بك' }, - 'addNoteBtn': { - 'en': 'Add Note', - 'ar': 'اضافة ملاحظة' + 'toAddPackageToQue': { + 'en': 'To add package to que', + 'ar': 'لإضافة حزمة إلى قائمة الانتظار' }, - 'nextDelivery': { - 'en': 'Next Delivery', - 'ar': 'الشحنة التالية' - } - - }; diff --git a/lib/core/viewModels/base_view_model.dart b/lib/core/viewModels/base_view_model.dart index 2af07b6..c2602c3 100644 --- a/lib/core/viewModels/base_view_model.dart +++ b/lib/core/viewModels/base_view_model.dart @@ -13,7 +13,7 @@ class BaseViewModel extends ChangeNotifier { String error = ""; AppSharedPreferences sharedPref = AppSharedPreferences(); - BaseViewModel(){ + BaseViewModel() { getUser(); } diff --git a/lib/pages/dashboard/dashboard_screen.dart b/lib/pages/dashboard/dashboard_screen.dart index 96f0ffb..0588811 100644 --- a/lib/pages/dashboard/dashboard_screen.dart +++ b/lib/pages/dashboard/dashboard_screen.dart @@ -10,9 +10,11 @@ import 'package:driverapp/widgets/others/network_base_view.dart'; import 'package:driverapp/widgets/others/rounded_container.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - +import 'package:driverapp/widgets/data_display/circle-container.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import '../base/base_view.dart'; import 'package:driverapp/config/shared_pref_kay.dart'; +import 'package:driverapp/uitl/translations_delegate_base.dart'; class DashboardScreen extends StatefulWidget { @override @@ -44,7 +46,7 @@ class _DashboardScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Have a great day,', + TranslationBase.of(context).haveGreatDay, style: TextStyle( fontSize: 14.5, color: Color(0xff636363), @@ -53,7 +55,8 @@ class _DashboardScreenState extends State { Padding( padding: EdgeInsets.only(top: 4.5), child: Text( - 'Driver Name', + 'Drive Name', + //model.user.userName, style: TextStyle( fontWeight: FontWeight.w400, fontSize: 25.0), @@ -114,7 +117,7 @@ class _DashboardScreenState extends State { MainAxisAlignment.spaceEvenly, children: [ Text( - 'You Have', + TranslationBase.of(context).youHave, style: TextStyle( color: Colors.white, fontSize: 10.0), @@ -126,7 +129,8 @@ class _DashboardScreenState extends State { fontSize: 25.0), ), Text( - 'Undeliverd\nPackages', + TranslationBase.of(context) + .undeliveredPackages, style: TextStyle( color: Colors.white, fontSize: 9.5), ) @@ -191,7 +195,7 @@ class _DashboardScreenState extends State { MainAxisAlignment.spaceEvenly, children: [ Text( - 'You Have', + TranslationBase.of(context).youHave, style: TextStyle( color: Colors.white, fontSize: 10.0), @@ -203,7 +207,8 @@ class _DashboardScreenState extends State { fontSize: 25.0), ), Text( - 'Succesful\nDeliveries', + TranslationBase.of(context) + .deliveredPackages, style: TextStyle( color: Colors.white, fontSize: 10.0), @@ -254,7 +259,10 @@ class _DashboardScreenState extends State { Expanded( child: InkWell( child: Container( - height: MediaQuery.of(context).size.height * 0.18, + height: MediaQuery.of(context).orientation == + Orientation.portrait + ? MediaQuery.of(context).size.height * 0.18 + : MediaQuery.of(context).size.height * 0.28, width: MediaQuery.of(context).size.width * 0.50, decoration: BoxDecoration( borderRadius: BorderRadius.circular(15.0), @@ -289,18 +297,20 @@ class _DashboardScreenState extends State { child: Padding( padding: EdgeInsets.only(top: 8.0), child: Text( - 'SCAN', + TranslationBase.of(context).scan, style: TextStyle( - fontSize: 35.0, - color: Colors.white, - fontWeight: FontWeight.w400), + fontSize: 35.0, + color: Colors.white, + fontWeight: FontWeight.w400, + ), ), ), ), Padding( padding: EdgeInsets.only(top: 0.0), child: Text( - 'To add package to que ', + TranslationBase.of(context) + .toAddPackageToQue, style: TextStyle( fontSize: 15.0, color: Colors.white, @@ -319,30 +329,32 @@ class _DashboardScreenState extends State { ], ), ), - Padding( - padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 1.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - children: [ - Text( - 'Nearest Drop-Offs', - style: TextStyle( - fontSize: 21.0, - fontWeight: FontWeight.w400, + NetworkBaseView( + baseViewModel: model, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 1.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + children: [ + Text( + TranslationBase.of(context).nearestDropOffs, + style: TextStyle( + fontSize: 21.0, + fontWeight: FontWeight.w400, + ), ), - ), - ], - ), - Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( + ], + ), + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( child: Row( children: [ Text( - 'See All', + TranslationBase.of(context).seeAll, style: TextStyle( fontSize: 14.5, color: Color(0xff42B6AD)), ), @@ -354,13 +366,15 @@ class _DashboardScreenState extends State { ], ), onTap: () => Navigator.push( - context, - MaterialPageRoute( - builder: (context) => OrdersListScreen()), - )), - ], - ), - ], + context, + MaterialPageRoute( + builder: (context) => OrdersListScreen()), + ), + ), + ], + ), + ], + ), ), ), NetworkBaseView( @@ -377,7 +391,10 @@ class _DashboardScreenState extends State { child: InkWell( child: RoundedContainer( raduis: 25.0, - height: MediaQuery.of(context).size.height * 0.109, + height: MediaQuery.of(context).orientation == + Orientation.portrait + ? MediaQuery.of(context).size.height * 0.109 + : MediaQuery.of(context).size.height * 0.209, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -385,18 +402,35 @@ class _DashboardScreenState extends State { flex: 1, child: Column( mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.only( - left: 10.0, bottom: 5.0, top: 10.0), + left: 15.0, top: 14.0), child: Image.asset( 'assets/images/location.png', - height: - MediaQuery.of(context).size.height * - 0.06, - width: - MediaQuery.of(context).size.width * - 0.05, + height: MediaQuery.of(context) + .orientation == + Orientation.portrait + ? MediaQuery.of(context) + .size + .height * + 0.06 + : MediaQuery.of(context) + .size + .height * + 0.11, + width: MediaQuery.of(context) + .orientation == + Orientation.portrait + ? MediaQuery.of(context) + .size + .width * + 0.05 + : MediaQuery.of(context) + .size + .width * + 0.09, ), ) ], @@ -404,13 +438,13 @@ class _DashboardScreenState extends State { ), if (model.orders.length != 0) Expanded( - flex: 3, + flex: 5, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(top: 10.0), + padding: EdgeInsets.only(top: 20.0), child: Text( model.orders[index].firstName + ' ' + @@ -437,31 +471,17 @@ class _DashboardScreenState extends State { ), ), Padding( - padding: EdgeInsets.all(10.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: CircleAvatar( - backgroundColor: Color(0xff707070), - radius: 28.0, - child: CircleAvatar( - backgroundColor: Colors.white, - maxRadius: 25.0, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - '3 K.m \n away', - style: TextStyle( - color: Color(0xff30B7B9), - fontSize: 10.5, - fontWeight: FontWeight.w400), - ), - ), - ), - ), - ) - ], + padding: EdgeInsets.all(8.0), + child: CircleContainer( + child: Text( + model.orders[index].distanceInKilometers + .toString() + + ' K.m\naway', + style: TextStyle( + color: Color(0xff42B6AD), + fontWeight: FontWeight.w800, + fontStyle: FontStyle.normal), + ), ), ), ], diff --git a/lib/pages/delivery/information_page.dart b/lib/pages/delivery/information_page.dart index 41436af..a9baff9 100644 --- a/lib/pages/delivery/information_page.dart +++ b/lib/pages/delivery/information_page.dart @@ -9,6 +9,8 @@ import 'package:driverapp/widgets/delivery/package_content.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:maps_launcher/maps_launcher.dart'; import '../../uitl/translations_delegate_base.dart'; import '../../widgets/others/app_scaffold_widget.dart'; @@ -34,10 +36,7 @@ class InformationPage extends StatelessWidget { children: [ Container( margin: EdgeInsets.only( - right: MediaQuery - .of(context) - .size - .width * 0.15, //50 + right: MediaQuery.of(context).size.width * 0.15, //50 ), child: IconButton( color: Colors.white, @@ -50,9 +49,7 @@ class InformationPage extends StatelessWidget { ), Container( child: Text( - TranslationBase - .of(context) - .deliveryInfo, + TranslationBase.of(context).deliveryInfo, style: TextStyle( color: Colors.white, fontSize: 20, @@ -64,31 +61,16 @@ class InformationPage extends StatelessWidget { Stack( children: [ Container( - width: MediaQuery - .of(context) - .size - .width, //400, - height: MediaQuery - .of(context) - .size - .width, //500, + width: MediaQuery.of(context).size.width, //400, + height: MediaQuery.of(context).size.width, //500, ), Container( - width: MediaQuery - .of(context) - .size - .width * 1, + width: MediaQuery.of(context).size.width * 1, //800, - height: MediaQuery - .of(context) - .size - .width * 1.5, + height: MediaQuery.of(context).size.width * 1.5, //700, margin: EdgeInsets.only( - top: MediaQuery - .of(context) - .size - .width * 0.3, //100 + top: MediaQuery.of(context).size.width * 0.3, //100 ), decoration: BoxDecoration( color: Colors.white, @@ -100,10 +82,8 @@ class InformationPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( - height: MediaQuery - .of(context) - .size - .width * 0.2, //170, + height: MediaQuery.of(context).size.width * + 0.2, //170, ), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -115,10 +95,11 @@ class InformationPage extends StatelessWidget { size: 30, color: Colors.white, ), - btnName: TranslationBase - .of(context) - .location, - btnFunction: () {}, + btnName: TranslationBase.of(context).location, + btnFunction: () { + MapsLauncher.launchCoordinates( + item.latitude, item.longitude); + }, ), delivery_info_button( btnColor: Colors.green, @@ -137,9 +118,7 @@ class InformationPage extends StatelessWidget { size: 30, color: Colors.white, ), - btnName: TranslationBase - .of(context) - .sms, + btnName: TranslationBase.of(context).sms, btnFunction: () {}, ), delivery_info_button( @@ -149,107 +128,80 @@ class InformationPage extends StatelessWidget { size: 30, color: Colors.white, ), - btnName: TranslationBase - .of(context) - .call, - btnFunction: () {}, + btnName: TranslationBase.of(context).call, + btnFunction: () => + launch("tel://" + item.mobileNumber), ), ], ), SizedBox( - height: MediaQuery - .of(context) - .size - .width * 0.1, //30, + height: + MediaQuery.of(context).size.width * 0.1, //30, ), Container( margin: EdgeInsets.only( - left: MediaQuery - .of(context) - .size - .width * 0.05, //15, - right: MediaQuery - .of(context) - .size - .width * 0.02, //15 + left: MediaQuery.of(context).size.width * + 0.05, //15, + right: MediaQuery.of(context).size.width * + 0.02, //15 ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - TranslationBase - .of(context) - .packageContent, + TranslationBase.of(context).packageContent, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 20), ), SizedBox( - height: MediaQuery - .of(context) - .size - .width * 0.05, //20, + height: MediaQuery.of(context).size.width * + 0.05, //20, ), Column( children: List.generate( item.itemsQuantitiesList.length, - (index) { - return package_content( - packageName: item - .itemsQuantitiesList[index] - .itemName - .toString(), - //'Panadol Extra 50 tablet', - packageCount: item - .itemsQuantitiesList[index] - .quantity - .toString(), - ); - }), + (index) { + return package_content( + packageName: item + .itemsQuantitiesList[index].itemName + .toString(), + //'Panadol Extra 50 tablet', + packageCount: item + .itemsQuantitiesList[index].quantity + .toString(), + ); + }), ), SizedBox( - height: MediaQuery - .of(context) - .size - .width * 0.01, //10, + height: MediaQuery.of(context).size.width * + 0.01, //10, ), ], ), ), SizedBox( - height: MediaQuery - .of(context) - .size - .width * 0.1, //30, + height: + MediaQuery.of(context).size.width * 0.1, //30, ), FlatButton( color: Color(0xff41bdbb), padding: EdgeInsets.only( - right: MediaQuery - .of(context) - .size - .width * 0.3, //100, - left: MediaQuery - .of(context) - .size - .width * 0.3, //100, - bottom: MediaQuery - .of(context) - .size - .width * 0.035, //15, - top: MediaQuery - .of(context) - .size - .width * 0.035, //15 + right: MediaQuery.of(context).size.width * + 0.3, //100, + left: MediaQuery.of(context).size.width * + 0.3, //100, + bottom: MediaQuery.of(context).size.width * + 0.035, //15, + top: MediaQuery.of(context).size.width * + 0.035, //15 ), shape: RoundedRectangleBorder( borderRadius: new BorderRadius.circular(30.0), side: BorderSide(color: Color(0xff41bdbb)), ), child: Text( - TranslationBase - .of(context) - .clientReached, + TranslationBase.of(context).clientReached, style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, @@ -267,12 +219,15 @@ class InformationPage extends StatelessWidget { ), ), CustomerBrief( - itemId: item.patientID, - customerFirstName: item.firstName, - customerLastName: item.lastName, - mobileNo: item.mobileNumber, - totalPayment: item.amount, - deliveryTime: item.orderCreatedOn), + itemId: item.patientID, + customerFirstName: item.firstName, + customerLastName: item.lastName, + mobileNo: item.mobileNumber, + totalPayment: item.amount, + deliveryTime: item.orderCreatedOn, + longitude: item.longitude, + latitude: item.latitude, + ), ], ), ], diff --git a/lib/pages/orders/pending_orders_page.dart b/lib/pages/orders/pending_orders_page.dart index 3e5a6a3..acfe0a5 100644 --- a/lib/pages/orders/pending_orders_page.dart +++ b/lib/pages/orders/pending_orders_page.dart @@ -1,10 +1,11 @@ import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/pages/delivery/information_page.dart'; +import 'package:driverapp/widgets/data_display/circle-container.dart'; import 'package:driverapp/widgets/others/app_scaffold_widget.dart'; import 'package:driverapp/widgets/others/rounded_container.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - +import 'package:driverapp/uitl/translations_delegate_base.dart'; import '../base/base_view.dart'; class OrdersListScreen extends StatefulWidget { @@ -20,7 +21,7 @@ class _OrdersListScreenState extends State { builder: (BuildContext context, OrdersViewModel model, Widget child) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Your Delivery Que', + appBarTitle: TranslationBase.of(context).yourDeliveryQue, titleColor: Colors.black, body: Column( children: [ @@ -35,7 +36,10 @@ class _OrdersListScreenState extends State { child: InkWell( child: RoundedContainer( raduis: 25.0, - height: MediaQuery.of(context).size.height * 0.109, + height: MediaQuery.of(context).orientation == + Orientation.portrait + ? MediaQuery.of(context).size.height * 0.109 + : MediaQuery.of(context).size.height * 0.209, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -43,17 +47,27 @@ class _OrdersListScreenState extends State { flex: 1, child: Column( mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only( - left: 10.0, bottom: 5.0, top: 10.0), + padding: + EdgeInsets.only(left: 15.0, top: 14.0), child: Image.asset( 'assets/images/location.png', - height: - MediaQuery.of(context).size.height * - 0.06, - width: MediaQuery.of(context).size.width * - 0.05, + height: MediaQuery.of(context) + .orientation == + Orientation.portrait + ? MediaQuery.of(context).size.height * + 0.06 + : MediaQuery.of(context).size.height * + 0.11, + width: MediaQuery.of(context) + .orientation == + Orientation.portrait + ? MediaQuery.of(context).size.width * + 0.05 + : MediaQuery.of(context).size.width * + 0.09, ), ) ], @@ -61,12 +75,12 @@ class _OrdersListScreenState extends State { ), if (model.orders.length != 0) Expanded( - flex: 3, + flex: 5, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(top: 10.0), + padding: EdgeInsets.only(top: 20.0), child: Text( model.orders[index].firstName + ' ' + @@ -84,7 +98,7 @@ class _OrdersListScreenState extends State { ), Expanded( child: Text( - 'Olaya ST, Behind kfc next to king , ', + 'Olaya ST, Behind kfc next to king', style: TextStyle(color: Color(0xff636363)), ), @@ -93,31 +107,17 @@ class _OrdersListScreenState extends State { ), ), Padding( - padding: EdgeInsets.all(10.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: CircleAvatar( - backgroundColor: Colors.black45, - radius: 28.0, - child: CircleAvatar( - backgroundColor: Colors.white, - maxRadius: 25.0, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - '3 K.m \n away', - style: TextStyle( - color: Color(0xff30B7B9), - fontSize: 10.5, - fontWeight: FontWeight.w400), - ), - ), - ), - ), - ) - ], + padding: EdgeInsets.all(8.0), + child: CircleContainer( + child: Text( + model.orders[index].distanceInKilometers + .toString() + + ' K.m\naway', + style: TextStyle( + color: Color(0xff42B6AD), + fontWeight: FontWeight.w800, + fontStyle: FontStyle.normal), + ), ), ), ], diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 0e07425..f8f2d29 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -103,6 +103,10 @@ class TranslationBase { String get confirmationSent => localizedValues['confirmationSent'][locale.languageCode]; + String get yourDeliveryQue => + localizedValues['yourDeliveryQue'][locale.languageCode]; + String get toAddPackageToQue => + localizedValues['toAddPackageToQue'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { From e5890e8e7ec0e12ff2ae7b64ffd514170f9dd816 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 2 Sep 2020 18:26:25 +0300 Subject: [PATCH 4/4] fix issue from merge --- lib/config/localized_values.dart | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 6ffcb66..cec7cfb 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -61,25 +61,6 @@ const Map> localizedValues = { 'en': 'To add package to que', 'ar': 'لإضافة حزمة إلى قائمة الانتظار' }, - 'location': { - 'en': 'Location', - 'ar': 'الموقع' - }, - 'call': { - 'en': 'Call', - 'ar': 'اتصال' - }, - 'sms': { - 'en': 'SMS', - 'ar': 'رسالة نصية' - }, - 'packageContent': { - 'en': 'Package Content', 'ar': 'محتوى الحزمة'}, - 'payment': {'en': 'Payment', 'ar': 'دفع'}, - 'delivryTime': {'en': 'Delivery Time', 'ar': 'وقت التوصيل'}, - 'clientReached': {'en': 'Client Reached', 'ar': 'الوصول الى العميل'}, - 'addNoteBtn': {'en': 'Add Note', 'ar': 'اضافة ملاحظة'}, - 'nextDelivery': {'en': 'Next Delivery', 'ar': 'الشحنة التالية'}, 'delivered': {'en': 'Delivered', 'ar': 'وصل'}, 'deliveredAccepted': {'en': 'Delivered/Accepted', 'ar': 'تم التوصيل/مقبول'}, 'deliveredRejected': {'en': 'Delivered/Rejected', 'ar': 'تم التوصيل/مرفوض'},