Merge branch 'delivery_confirmed' into 'development'

Delivery confirmed

See merge request Cloud_Solution/driver-app!18
logut
enad hilal 6 years ago
commit 287acae3f1

@ -37,8 +37,50 @@ const Map<String, Map<String, String>> localizedValues = {
'en': 'Undelivered Packages', 'en': 'Undelivered Packages',
'ar': 'الطرود التي لم يتم تسليمها' 'ar': 'الطرود التي لم يتم تسليمها'
}, },
'away': {'en': 'away', 'ar': 'بعيدا'}, 'deliveryInfo': {
'scan': {'en': 'Scan', 'ar': 'مسح'}, 'en': 'Delivery information',
'scan2': {'en': 'away', 'ar': 'بعيدا'}, 'ar': 'معلومات الشحنة'
'scanDb': {'en': 'away', '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': 'الوصول الى العميل'
},
'addNoteBtn': {
'en': 'Add Note',
'ar': 'اضافة ملاحظة'
},
'nextDelivery': {
'en': 'Next Delivery',
'ar': 'الشحنة التالية'
}
}; };

@ -10,13 +10,13 @@ class ScanQrRequestModel {
ScanQrRequestModel( ScanQrRequestModel(
{this.deliveryOrderID, {this.deliveryOrderID,
this.driverID, this.driverID,
this.createdBy, this.createdBy,
this.channel, this.channel,
this.groupID, this.groupID,
this.tokenID, this.tokenID,
this.userID, this.userID,
this.mobileNo}); this.mobileNo});
ScanQrRequestModel.fromJson(Map<String, dynamic> json) { ScanQrRequestModel.fromJson(Map<String, dynamic> json) {
deliveryOrderID = json['DeliveryOrderID']; deliveryOrderID = json['DeliveryOrderID'];

@ -24,9 +24,8 @@ class BaseAppClient {
}) async { }) async {
String url = BASE_URL + endPoint; String url = BASE_URL + endPoint;
try { try {
Map profile = await sharedPref.getObject(USER_PROFILE); Map profile = await sharedPref.getObject(USER_PROFILE);
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
if (profile != null) { if (profile != null) {
AuthenticatedUser doctorProfile = AuthenticatedUser.fromJson(profile); AuthenticatedUser doctorProfile = AuthenticatedUser.fromJson(profile);
body['DriverID'] = doctorProfile?.userID; body['DriverID'] = doctorProfile?.userID;
@ -38,7 +37,6 @@ class BaseAppClient {
} }
print("URL : $url"); print("URL : $url");
print("Body : ${json.encode(body)}"); print("Body : ${json.encode(body)}");

@ -5,6 +5,7 @@ import 'package:driverapp/core/service/base_service.dart';
class OrdersService extends BaseService { class OrdersService extends BaseService {
List<PendingOrders> _orders = List(); List<PendingOrders> _orders = List();
List<PendingOrders> get orders => _orders; List<PendingOrders> get orders => _orders;
bool isOrderInserted; bool isOrderInserted;
@ -22,15 +23,15 @@ class OrdersService extends BaseService {
hasError = false; hasError = false;
try { try {
await baseAppClient.post(GET_ALL_ORDERS, await baseAppClient.post(GET_ALL_ORDERS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_orders.clear(); _orders.clear();
response['PatientER_Delivery_GetAllOrderList'].forEach((order) { response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
_orders.add(PendingOrders.fromJson(order)); _orders.add(PendingOrders.fromJson(order));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: _requestGetPendingOrders.toJson()); }, body: _requestGetPendingOrders.toJson());
} catch (e) { } catch (e) {
hasError = true; hasError = true;
super.error = error; super.error = error;
@ -38,25 +39,22 @@ class OrdersService extends BaseService {
} }
} }
Future insertOrder() async { Future insertOrder() async {
ScanQrRequestModel _scanQrRequestModel = ScanQrRequestModel(deliveryOrderID: 1200, groupID: 0); ScanQrRequestModel _scanQrRequestModel =
ScanQrRequestModel(deliveryOrderID: 1200, groupID: 0);
hasError = false; hasError = false;
try { try {
await baseAppClient.post(SCAN_QR, await baseAppClient.post(SCAN_QR,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
isOrderInserted = response["PatientER_Delivery_IsOrderInserted"]; isOrderInserted = response["PatientER_Delivery_IsOrderInserted"];
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: _scanQrRequestModel.toJson()); }, body: _scanQrRequestModel.toJson());
} catch (e) { } catch (e) {
hasError = true; hasError = true;
super.error = error; super.error = error;
throw e; throw e;
} }
} }
} }

@ -1,6 +1,7 @@
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/service/orders_service.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart'; import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart';
import 'package:driverapp/core/service/orders_service.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';

@ -4,8 +4,8 @@ import 'core/service/authentication_service.dart';
import 'core/service/hospital_service.dart'; import 'core/service/hospital_service.dart';
import 'core/service/orders_service.dart'; import 'core/service/orders_service.dart';
import 'core/viewModels/authentication_view_model.dart'; import 'core/viewModels/authentication_view_model.dart';
import 'core/viewModels/orders_view_model.dart';
import 'core/viewModels/hospital_view_model.dart'; import 'core/viewModels/hospital_view_model.dart';
import 'core/viewModels/orders_view_model.dart';
GetIt locator = GetIt.instance; GetIt locator = GetIt.instance;

@ -5,7 +5,6 @@ import 'package:driverapp/core/viewModels/authentication_view_model.dart';
import 'package:driverapp/core/viewModels/project_view_model.dart'; import 'package:driverapp/core/viewModels/project_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart'; import 'package:driverapp/pages/base/base_view.dart';
import 'package:driverapp/pages/dashboard/dashboard_screen.dart'; import 'package:driverapp/pages/dashboard/dashboard_screen.dart';
import 'package:driverapp/pages/landing/landing_page.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart'; import 'package:driverapp/uitl/translations_delegate_base.dart';
import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/buttons/secondary_button.dart'; import 'package:driverapp/widgets/buttons/secondary_button.dart';
@ -29,8 +28,9 @@ class LoginPage extends StatelessWidget {
return AnimatedSwitcher( return AnimatedSwitcher(
duration: Duration(microseconds: 350), duration: Duration(microseconds: 350),
child: BaseView<AuthenticationViewModel>( child: BaseView<AuthenticationViewModel>(
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) =>
isShowAppBar: false, AppScaffold(
isShowAppBar: false,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
child: Column( child: Column(

@ -25,7 +25,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
onModelReady: (model) => model.getPendingOrders(), onModelReady: (model) => model.getPendingOrders(),
builder: builder:
(BuildContext context, OrdersViewModel model, Widget child) => (BuildContext context, OrdersViewModel model, Widget child) =>
AppScaffold( AppScaffold(
body: Column( body: Column(
// mainAxisAlignment: MainAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -92,8 +92,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0), padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.15, height: MediaQuery
width: MediaQuery.of(context).size.width * 0.44, .of(context)
.size
.height * 0.15,
width: MediaQuery
.of(context)
.size
.width * 0.44,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient( gradient: LinearGradient(
@ -106,7 +112,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
padding: EdgeInsets.all(10.0), padding: EdgeInsets.all(10.0),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Text( Text(
'You Have', 'You Have',
@ -139,13 +145,15 @@ class _DashboardScreenState extends State<DashboardScreen> {
padding: EdgeInsets.only(right: 9.5), padding: EdgeInsets.only(right: 9.5),
child: Image.asset( child: Image.asset(
'assets/images/closed_box.png', 'assets/images/closed_box.png',
height: MediaQuery.of(context) height: MediaQuery
.size .of(context)
.height * .size
.height *
0.09, 0.09,
width: MediaQuery.of(context) width: MediaQuery
.size .of(context)
.width * .size
.width *
0.20, 0.20,
//fit: BoxFit.cover, //fit: BoxFit.cover,
)), )),
@ -166,7 +174,10 @@ class _DashboardScreenState extends State<DashboardScreen> {
padding: EdgeInsets.symmetric(horizontal: 10.0), padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.15, height: MediaQuery.of(context).size.height * 0.15,
width: MediaQuery.of(context).size.width * 0.44, width: MediaQuery
.of(context)
.size
.width * 0.44,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient( gradient: LinearGradient(
@ -180,7 +191,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
children: <Widget>[ children: <Widget>[
Text( Text(
'You Have', 'You Have',
@ -236,8 +247,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
Expanded( Expanded(
child: InkWell( child: InkWell(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.16, height: MediaQuery
width: MediaQuery.of(context).size.width * 0.50, .of(context)
.size
.height * 0.16,
width: MediaQuery
.of(context)
.size
.width * 0.50,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient(colors: [ gradient: LinearGradient(colors: [
@ -253,9 +270,15 @@ class _DashboardScreenState extends State<DashboardScreen> {
Image.asset( Image.asset(
'assets/images/qr_code.png', 'assets/images/qr_code.png',
width: width:
MediaQuery.of(context).size.width * 0.25, MediaQuery
.of(context)
.size
.width * 0.25,
height: height:
MediaQuery.of(context).size.height * 0.14, MediaQuery
.of(context)
.size
.height * 0.14,
fit: BoxFit.cover, fit: BoxFit.cover,
) )
], ],
@ -265,8 +288,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
InkWell( InkWell(
onTap:(){ onTap: () {
_scanQrAndGetPatient(context,model); _scanQrAndGetPatient(context, model);
}, },
child: Text( child: Text(
'SCAN', 'SCAN',
@ -329,10 +352,10 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
onTap: () => Navigator.push( onTap: () => Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => OrdersListScreen()), builder: (context) => OrdersListScreen()),
)), )),
], ],
), ),
], ],
@ -340,47 +363,52 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
Expanded( Expanded(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
itemCount: //model.orders == null ? 0 : model.orders.length, itemCount: //model.orders == null ? 0 : model.orders.length,
3, 3,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return Padding( return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.2), padding: EdgeInsets.symmetric(horizontal: 12.2),
child: InkWell( child: InkWell(
child: RoundedContainer( child: RoundedContainer(
height: MediaQuery.of(context).size.height * 0.108, height: MediaQuery
child: Row( .of(context)
mainAxisAlignment: MainAxisAlignment.spaceBetween, .size
children: <Widget>[ .height * 0.108,
Expanded( child: Row(
flex: 1, mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Column( children: <Widget>[
mainAxisAlignment: MainAxisAlignment.center, Expanded(
children: <Widget>[ flex: 1,
Padding( child: Column(
padding: EdgeInsets.only(left: 22.0), mainAxisAlignment: MainAxisAlignment.center,
child: Image.asset( children: <Widget>[
'assets/images/location.png', Padding(
height: MediaQuery.of(context) padding: EdgeInsets.only(left: 22.0),
.size child: Image.asset(
.height * 'assets/images/location.png',
0.10, height: MediaQuery
width: MediaQuery.of(context) .of(context)
.size .size
.width * .height *
0.09, 0.10,
), width: MediaQuery
) .of(context)
], .size
), .width *
), 0.09,
if (model.orders.length != 0) ),
Expanded( )
flex: 3, ],
child: Column( ),
crossAxisAlignment: ),
CrossAxisAlignment.start, if (model.orders.length != 0)
Expanded(
flex: 3,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text( Text(
model.orders[index].firstName + model.orders[index].firstName +
@ -453,7 +481,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
); );
} }
_scanQrAndGetPatient(BuildContext context,OrdersViewModel model) async { _scanQrAndGetPatient(BuildContext context, OrdersViewModel model) async {
/// When give qr we will change this method to get data /// When give qr we will change this method to get data
/// var result = await BarcodeScanner.scan(); /// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result /// int patientID = get from qr result
@ -464,10 +492,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
await model.insertOrder(); await model.insertOrder();
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error); Utils.showErrorToast(model.error);
}else{ } else {
AppToast.showSuccessToast(message: "Order Added"); AppToast.showSuccessToast(message: "Order Added");
} }
} }
} }

@ -2,6 +2,7 @@ import 'package:driverapp/widgets/delivery/customer_brief_card.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../uitl/translations_delegate_base.dart';
import '../../widgets/others/app_scaffold_widget.dart'; import '../../widgets/others/app_scaffold_widget.dart';
class DeliveryConfirmedPage extends StatelessWidget { class DeliveryConfirmedPage extends StatelessWidget {
@ -53,14 +54,18 @@ class DeliveryConfirmedPage extends StatelessWidget {
size: 60, size: 60,
), ),
Text( Text(
'Delivery Confirmed', TranslationBase
.of(context)
.deliveryInfo,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
Text( Text(
'Confirmation email and SMS has been sent', TranslationBase
.of(context)
.confirmationSent,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 13, fontSize: 13,
@ -110,7 +115,9 @@ class DeliveryConfirmedPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
), ),
label: Text( label: Text(
'Add Note', TranslationBase
.of(context)
.addNoteBtn,
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
onPressed: () {}, onPressed: () {},
@ -124,7 +131,9 @@ class DeliveryConfirmedPage extends StatelessWidget {
side: BorderSide(color: Color(0xff41bdbb)), side: BorderSide(color: Color(0xff41bdbb)),
), ),
child: Text( child: Text(
'Next Delivery', TranslationBase
.of(context)
.nextDelivery,
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
onPressed: () {}, onPressed: () {},

@ -5,6 +5,7 @@ import 'package:driverapp/widgets/delivery/package_content.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../uitl/translations_delegate_base.dart';
import '../../widgets/others/app_scaffold_widget.dart'; import '../../widgets/others/app_scaffold_widget.dart';
class InformationPage extends StatelessWidget { class InformationPage extends StatelessWidget {
@ -43,7 +44,9 @@ class InformationPage extends StatelessWidget {
), ),
Container( Container(
child: Text( child: Text(
'Delivery information', TranslationBase
.of(context)
.deliveryInfo,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 20, fontSize: 20,
@ -84,7 +87,9 @@ class InformationPage extends StatelessWidget {
size: 30, size: 30,
color: Colors.white, color: Colors.white,
), ),
btnName: 'Location', btnName: TranslationBase
.of(context)
.location,
btnFunction: () {}, btnFunction: () {},
), ),
delivery_info_button( delivery_info_button(
@ -104,7 +109,9 @@ class InformationPage extends StatelessWidget {
size: 30, size: 30,
color: Colors.white, color: Colors.white,
), ),
btnName: 'SMS', btnName: TranslationBase
.of(context)
.sms,
btnFunction: () {}, btnFunction: () {},
), ),
delivery_info_button( delivery_info_button(
@ -114,7 +121,9 @@ class InformationPage extends StatelessWidget {
size: 30, size: 30,
color: Colors.white, color: Colors.white,
), ),
btnName: 'Call', btnName: TranslationBase
.of(context)
.call,
btnFunction: () {}, btnFunction: () {},
), ),
], ],
@ -128,7 +137,9 @@ class InformationPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text( Text(
'Package Content', TranslationBase
.of(context)
.packageContent,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 20), fontSize: 20),
@ -186,7 +197,9 @@ class InformationPage extends StatelessWidget {
side: BorderSide(color: Color(0xff41bdbb)), side: BorderSide(color: Color(0xff41bdbb)),
), ),
child: Text( child: Text(
'Client Reached', TranslationBase
.of(context)
.clientReached,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart';
import '../base/base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:driverapp/widgets/others/rounded_container.dart'; import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../base/base_view.dart';
class OrdersListScreen extends StatefulWidget { class OrdersListScreen extends StatefulWidget {
@override @override
@ -17,125 +17,140 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
onModelReady: (model) => model.getPendingOrders(), onModelReady: (model) => model.getPendingOrders(),
builder: builder:
(BuildContext context, OrdersViewModel model, Widget child) => (BuildContext context, OrdersViewModel model, Widget child) =>
Scaffold( Scaffold(
appBar: AppBar( appBar: AppBar(
centerTitle: true, centerTitle: true,
backgroundColor: Color(0xffF4F9FA), backgroundColor: Color(0xffF4F9FA),
title: Text( title: Text(
'Your Delivery Que', 'Your Delivery Que',
),
),
body: Column(
children: <Widget>[
Center(
child: Text(
'Nearest',
style: TextStyle(
color: Color(0xff30B7B9),
fontSize: 18.0,
fontWeight: FontWeight.w400),
), ),
), ),
Expanded( body: Column(
child: ListView.builder( children: <Widget>[
itemCount: model.orders == null ? 0 : model.orders.length, Center(
scrollDirection: Axis.vertical, child: Text(
shrinkWrap: true, 'Nearest',
itemBuilder: (BuildContext context, int index) { style: TextStyle(
return Padding( color: Color(0xff30B7B9),
padding: EdgeInsets.symmetric(horizontal: 12.2), fontSize: 18.0,
child: RoundedContainer( fontWeight: FontWeight.w400),
height: MediaQuery.of(context).orientation == ),
),
Expanded(
child: ListView.builder(
itemCount: model.orders == null ? 0 : model.orders.length,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.2),
child: RoundedContainer(
height: MediaQuery
.of(context)
.orientation ==
Orientation.portrait Orientation.portrait
? MediaQuery.of(context).size.height * 0.107 ? MediaQuery
: MediaQuery.of(context).size.height * 0.18, .of(context)
child: Row( .size
mainAxisAlignment: MainAxisAlignment.spaceBetween, .height * 0.107
children: <Widget>[ : MediaQuery
Expanded( .of(context)
flex: 1, .size
child: Column( .height * 0.18,
mainAxisAlignment: MainAxisAlignment.center, child: Row(
children: <Widget>[ mainAxisAlignment: MainAxisAlignment.spaceBetween,
Padding( children: <Widget>[
padding: EdgeInsets.only(left: 22.0), Expanded(
child: Image.asset( flex: 1,
'assets/images/location.png', child: Column(
height: mainAxisAlignment: MainAxisAlignment.center,
MediaQuery.of(context).size.height * children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 22.0),
child: Image.asset(
'assets/images/location.png',
height:
MediaQuery
.of(context)
.size
.height *
0.101, 0.101,
), ),
),
],
),
),
if (model.orders.length != 0)
Expanded(
flex: 3,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Text(
model.orders[index].firstName +
' ' +
model.orders[index].lastName,
style: TextStyle(fontSize: 18.0),
),
),
Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0),
),
Expanded(
child: Text(
'Olaya ST, Behind kfc next to king ',
style: TextStyle(color: Colors.black45),
), ),
) ],
], ),
), ),
), if (model.orders.length != 0)
Padding(
padding: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded( Expanded(
child: CircleAvatar( flex: 3,
backgroundColor: Colors.black45, child: Column(
radius: 28.0, crossAxisAlignment: CrossAxisAlignment
child: CircleAvatar( .start,
backgroundColor: Colors.white, children: <Widget>[
maxRadius: 25.1, Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text( child: Text(
'3 K.m \n away', model.orders[index].firstName +
style: TextStyle( ' ' +
color: Color(0xff30B7B9), model.orders[index].lastName,
fontSize: 12.5, style: TextStyle(fontSize: 18.0),
fontWeight: FontWeight.w600),
), ),
), ),
), Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0),
),
Expanded(
child: Text(
'Olaya ST, Behind kfc next to king ',
style: TextStyle(
color: Colors.black45),
),
)
],
), ),
) ),
], Padding(
), padding: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: CircleAvatar(
backgroundColor: Colors.black45,
radius: 28.0,
child: CircleAvatar(
backgroundColor: Colors.white,
maxRadius: 25.1,
child: Padding(
padding: const EdgeInsets.all(
8.0),
child: Text(
'3 K.m \n away',
style: TextStyle(
color: Color(0xff30B7B9),
fontSize: 12.5,
fontWeight: FontWeight
.w600),
),
),
),
),
)
],
),
),
],
), ),
], ),
), );
), }),
); ),
}), ],
), ),
], ),
),
),
); );
} }
} }

@ -49,23 +49,60 @@ class TranslationBase {
String get english => localizedValues['english'][locale.languageCode]; String get english => localizedValues['english'][locale.languageCode];
String get arabic => localizedValues['arabic'][locale.languageCode]; String get arabic => localizedValues['arabic'][locale.languageCode];
String get enterCredentialsMsg => String get enterCredentialsMsg =>
localizedValues['enterCredentialsMsg'][locale.languageCode]; localizedValues['enterCredentialsMsg'][locale.languageCode];
String get forgotPassword => String get forgotPassword =>
localizedValues['forgotPassword'][locale.languageCode]; localizedValues['forgotPassword'][locale.languageCode];
String get login => localizedValues['login'][locale.languageCode]; String get login => localizedValues['login'][locale.languageCode];
String get haveGreatDay => String get haveGreatDay =>
localizedValues['haveGreatDay'][locale.languageCode]; localizedValues['haveGreatDay'][locale.languageCode];
String get youHave => localizedValues['youHave'][locale.languageCode]; String get youHave => localizedValues['youHave'][locale.languageCode];
String get deliveredPackages => String get deliveredPackages =>
localizedValues['deliveredPackages'][locale.languageCode]; localizedValues['deliveredPackages'][locale.languageCode];
String get seeAll => localizedValues['seeAll'][locale.languageCode]; String get seeAll => localizedValues['seeAll'][locale.languageCode];
String get nearestDropOffs => String get nearestDropOffs =>
localizedValues['nearestDropOffs'][locale.languageCode]; localizedValues['nearestDropOffs'][locale.languageCode];
String get undeliveredPackages => String get undeliveredPackages =>
localizedValues['undeliveredPackages'][locale.languageCode]; localizedValues['undeliveredPackages'][locale.languageCode];
String get away => localizedValues['away'][locale.languageCode]; String get away => localizedValues['away'][locale.languageCode];
String get scan => localizedValues['scan'][locale.languageCode]; String get scan => localizedValues['scan'][locale.languageCode];
String get deliveryInfo =>
localizedValues['deliveryInfo'][locale.languageCode];
String get location => localizedValues['location'][locale.languageCode];
String get call => localizedValues['call'][locale.languageCode];
String get sms => localizedValues['sms'][locale.languageCode];
String get packageContent =>
localizedValues['packageContent'][locale.languageCode];
String get payment => localizedValues['payment'][locale.languageCode];
String get delivryTime => localizedValues['delivryTime'][locale.languageCode];
String get clientReached =>
localizedValues['clientReached'][locale.languageCode];
String get addNoteBtn => localizedValues['addNoteBtn'][locale.languageCode];
String get nextDelivery =>
localizedValues['nextDelivery'][locale.languageCode];
String get confirmationSent =>
localizedValues['confirmationSent'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../uitl/translations_delegate_base.dart';
class CustomerBrief extends StatelessWidget { class CustomerBrief extends StatelessWidget {
final int itemId; final int itemId;
final String time; final String time;
@ -109,7 +111,9 @@ class CustomerBrief extends StatelessWidget {
Row( Row(
children: <Widget>[ children: <Widget>[
Text( Text(
'payment', TranslationBase
.of(context)
.payment,
), ),
SizedBox( SizedBox(
width: 170, width: 170,
@ -125,7 +129,11 @@ class CustomerBrief extends StatelessWidget {
), ),
Row( Row(
children: <Widget>[ children: <Widget>[
Text('Delivery Time'), Text(
TranslationBase
.of(context)
.delivryTime,
),
SizedBox( SizedBox(
width: 50, width: 50,
), ),

Loading…
Cancel
Save