Enad Commit to merge master with delivery_confirmed branch.

there was conflicts in (localized_values.dart) and (translations_delegate_base.dart) and accept both changes.
logut
enadhilal 6 years ago
commit 208d903e0a

@ -1,15 +1,22 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
const MAX_SMALL_SCREEN = 660; /// End points
const BASE_URL = 'https://uat.hmgwebservices.com/Services'; const BASE_URL = 'https://uat.hmgwebservices.com/Services';
const GET_PROJECT = '/Lists.svc/REST/GetProject'; const GET_PROJECT = '/Lists.svc/REST/GetProject';
const LOGIN = "/Authentication.svc/REST/CheckDriverAuthentication"; const LOGIN = "/Authentication.svc/REST/CheckDriverAuthentication";
const GET_ALL_ORDERS = '/Patients.svc/REST/PatientER_Delivery_GetAllOrder';
const SCAN_QR = '/Patients.svc/REST/PatientER_Delivery_OrderInsert';
/// Body Constant
const CHANNEL = 9;
/// design constant
const MAX_SMALL_SCREEN = 660;
const GET_ALL_ORDERS = '/Patients.svc/REST/PatientER_Delivery_GetAllOrder';
class AppGlobal { class AppGlobal {
static BuildContext context; static BuildContext context;
} }

@ -11,7 +11,7 @@ const Map<String, Map<String, String>> localizedValues = {
'services': {'en': 'SERVICES', 'ar': 'الخدمات'}, 'services': {'en': 'SERVICES', 'ar': 'الخدمات'},
'mySchedule': {'en': 'My Schedule', 'ar': 'جدولي'}, 'mySchedule': {'en': 'My Schedule', 'ar': 'جدولي'},
'logout': {'en': 'Logout', 'ar': 'تسجيل خروج'}, 'logout': {'en': 'Logout', 'ar': 'تسجيل خروج'},
'booking':{'en': 'Booking','ar':'حجز'}, 'booking': {'en': 'Booking', 'ar': 'حجز'},
'enterId': {'en': 'User Name', 'ar': 'اسم المستخدم'}, 'enterId': {'en': 'User Name', 'ar': 'اسم المستخدم'},
'pleaseEnterYourID': { 'pleaseEnterYourID': {
'en': 'Please enter your ', 'en': 'Please enter your ',
@ -26,13 +26,16 @@ const Map<String, Map<String, String>> localizedValues = {
'en': 'Please insert username and password to login', 'en': 'Please insert username and password to login',
'ar': 'الرجاء إدخال اسم المستخدم وكلمة المرور لتسجيل الدخول' 'ar': 'الرجاء إدخال اسم المستخدم وكلمة المرور لتسجيل الدخول'
}, },
'forgotPassword': { 'forgotPassword': {'en': 'Forgot Password?', 'ar': 'هل نسيت كلمة المرور ؟'},
'en': 'Forgot Password?', 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'},
'ar': 'هل نسيت كلمة المرور ؟' 'haveGreatDay': {'en': 'have a great day ,', 'ar': 'أتمنى لك يوما جميلا '},
}, 'youHave': {'en': 'You Have', 'ar': 'يوجد لديك'},
'login': { 'deliveredPackages': {'en': 'Delivered Packages', 'ar': 'الطرود المسلمة'},
'en': 'Login', 'seeAll': {'en': 'See All', 'ar': 'اظهار الكل'},
'ar': 'تسجيل الدخول' 'nearestDropOffs': {'en': 'nearest drop-offs', 'ar': 'أقرب نقطة إنزال'},
'undeliveredPackages': {
'en': 'Undelivered Packages',
'ar': 'الطرود التي لم يتم تسليمها'
}, },
'deliveryInfo': { 'deliveryInfo': {
'en': 'Delivery information', 'en': 'Delivery information',

@ -9,9 +9,10 @@ class PendingOrders {
String firstName; String firstName;
String lastName; String lastName;
String mobileNumber; String mobileNumber;
int distanceInKilometers;
PendingOrders( PendingOrders({
{this.driverID, this.driverID,
this.searchKey, this.searchKey,
this.pageSize, this.pageSize,
this.pageIndex, this.pageIndex,
@ -20,7 +21,9 @@ class PendingOrders {
this.mobileNo, this.mobileNo,
this.firstName, this.firstName,
this.lastName, this.lastName,
this.mobileNumber}); this.mobileNumber,
this.distanceInKilometers,
});
PendingOrders.fromJson(Map<String, dynamic> json) { PendingOrders.fromJson(Map<String, dynamic> json) {
driverID = json['DriverID']; driverID = json['DriverID'];
@ -33,6 +36,7 @@ class PendingOrders {
firstName = json['FirstName']; firstName = json['FirstName'];
lastName = json['LastName']; lastName = json['LastName'];
mobileNumber = json['MobileNumber']; mobileNumber = json['MobileNumber'];
distanceInKilometers = json['DistanceInKilometers'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {

@ -0,0 +1,44 @@
class ScanQrRequestModel {
int deliveryOrderID;
int driverID;
int createdBy;
int channel;
int groupID;
String tokenID;
String userID;
String mobileNo;
ScanQrRequestModel(
{this.deliveryOrderID,
this.driverID,
this.createdBy,
this.channel,
this.groupID,
this.tokenID,
this.userID,
this.mobileNo});
ScanQrRequestModel.fromJson(Map<String, dynamic> json) {
deliveryOrderID = json['DeliveryOrderID'];
driverID = json['DriverID'];
createdBy = json['CreatedBy'];
channel = json['Channel'];
groupID = json['GroupID'];
tokenID = json['TokenID'];
userID = json['UserID'];
mobileNo = json['MobileNo'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['DeliveryOrderID'] = this.deliveryOrderID;
data['DriverID'] = this.driverID;
data['CreatedBy'] = this.createdBy;
data['Channel'] = this.channel;
data['GroupID'] = this.groupID;
data['TokenID'] = this.tokenID;
data['UserID'] = this.userID;
data['MobileNo'] = this.mobileNo;
return data;
}
}

@ -1,6 +1,8 @@
import 'dart:convert'; import 'dart:convert';
import 'package:driverapp/config/config.dart'; import 'package:driverapp/config/config.dart';
import 'package:driverapp/config/shared_pref_kay.dart';
import 'package:driverapp/core/model/authentication/authenticated_user.dart';
import 'package:driverapp/uitl/app_shared_preferences.dart'; import 'package:driverapp/uitl/app_shared_preferences.dart';
import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/uitl/utils.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
@ -22,9 +24,18 @@ class BaseAppClient {
}) async { }) async {
String url = BASE_URL + endPoint; String url = BASE_URL + endPoint;
try { try {
Map profile = await sharedPref.getObject(USER_PROFILE);
String token = await sharedPref.getString(TOKEN);
if (profile != null) {
AuthenticatedUser doctorProfile = AuthenticatedUser.fromJson(profile);
body['DriverID'] = doctorProfile?.userID;
body['CreatedBy'] = doctorProfile?.userID;
body['UserID'] = '${doctorProfile?.userID}';
body['TokenID'] = token;
body['MobileNo'] = doctorProfile?.mobileNumber;
body['Channel'] = CHANNEL;
}
//Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// String token = await sharedPref.getString(TOKEN);
print("URL : $url"); print("URL : $url");
print("Body : ${json.encode(body)}"); print("Body : ${json.encode(body)}");

@ -0,0 +1,60 @@
import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/service/base_service.dart';
class OrdersService extends BaseService {
List<PendingOrders> _orders = List();
List<PendingOrders> get orders => _orders;
bool isOrderInserted;
PendingOrders _requestGetPendingOrders = PendingOrders(
driverID: 1111,
searchKey: "",
pageSize: 0,
pageIndex: 0,
tokenID: "@dm!n",
userID: "1111",
mobileNo: "0541710575",
);
Future getPendingOrders() async {
hasError = false;
try {
await baseAppClient.post(GET_ALL_ORDERS,
onSuccess: (dynamic response, int statusCode) {
_orders.clear();
response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
_orders.add(PendingOrders.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e;
}
}
Future insertOrder() async {
ScanQrRequestModel _scanQrRequestModel =
ScanQrRequestModel(deliveryOrderID: 1200, groupID: 0);
hasError = false;
try {
await baseAppClient.post(SCAN_QR,
onSuccess: (dynamic response, int statusCode) {
isOrderInserted = response["PatientER_Delivery_IsOrderInserted"];
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _scanQrRequestModel.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e;
}
}
}

@ -1,31 +0,0 @@
import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_model.dart';
import 'package:driverapp/core/service/base_service.dart';
class PendingOrdersService extends BaseService {
List<PendingOrders> _orders = List();
List<PendingOrders> get orders => _orders;
PendingOrders _requestGetPendingOrders = PendingOrders(
driverID: 1111,
searchKey: "",
pageSize: 0,
pageIndex: 0,
tokenID: "@dm!n",
userID: "1111",
mobileNo: "0541710575",
);
Future getPendingOrders() async {
await baseAppClient.post(GET_ALL_ORDERS,
onSuccess: (dynamic response, int statusCode) {
_orders.clear();
response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
_orders.add(PendingOrders.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
}
}

@ -1,11 +1,12 @@
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/service/pending_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';
class PendingOrdersViewModel extends BaseViewModel { class OrdersViewModel extends BaseViewModel {
PendingOrdersService _pendingOrdersService = locator<PendingOrdersService>(); OrdersService _pendingOrdersService = locator<OrdersService>();
List<PendingOrders> get orders => _pendingOrdersService.orders; List<PendingOrders> get orders => _pendingOrdersService.orders;
@ -18,4 +19,15 @@ class PendingOrdersViewModel extends BaseViewModel {
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future insertOrder() async {
setState(ViewState.ErrorLocal);
await _pendingOrdersService.insertOrder();
if (_pendingOrdersService.hasError) {
error = _pendingOrdersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
} }

@ -2,10 +2,10 @@ import 'package:get_it/get_it.dart';
import 'core/service/authentication_service.dart'; import 'core/service/authentication_service.dart';
import 'core/service/hospital_service.dart'; import 'core/service/hospital_service.dart';
import 'core/service/pending_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/pending_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;
@ -14,10 +14,10 @@ void setupLocator() {
/// Services /// Services
locator.registerLazySingleton(() => HospitalService()); locator.registerLazySingleton(() => HospitalService());
locator.registerLazySingleton(() => AuthenticationService()); locator.registerLazySingleton(() => AuthenticationService());
locator.registerLazySingleton(() => PendingOrdersService()); locator.registerLazySingleton(() => OrdersService());
/// View Model /// View Model
locator.registerFactory(() => HospitalViewModel()); locator.registerFactory(() => HospitalViewModel());
locator.registerFactory(() => AuthenticationViewModel()); locator.registerFactory(() => AuthenticationViewModel());
locator.registerFactory(() => PendingOrdersViewModel()); locator.registerFactory(() => OrdersViewModel());
} }

@ -5,12 +5,12 @@ 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';
import 'package:driverapp/widgets/data_display/circle-container.dart'; import 'package:driverapp/widgets/data_display/circle-container.dart';
import 'package:driverapp/widgets/input/text_field.dart'; import 'package:driverapp/widgets/input/text_field.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
@ -28,7 +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) => Scaffold( builder: (_, model, widget) =>
AppScaffold(
isShowAppBar: false,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
child: Column( child: Column(

@ -1,7 +1,11 @@
import 'package:driverapp/config/size_config.dart'; import 'package:barcode_scan/platform_wrapper.dart';
import 'package:driverapp/core/viewModels/pending_orders_view_model.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/delivery/information_page.dart'; import 'package:driverapp/pages/delivery/information_page.dart';
import 'package:driverapp/pages/orders/pending_orders_page.dart'; import 'package:driverapp/pages/orders/pending_orders_page.dart';
import 'package:driverapp/uitl/app_toast.dart';
import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.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/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -16,13 +20,15 @@ class DashboardScreen extends StatefulWidget {
class _DashboardScreenState extends State<DashboardScreen> { class _DashboardScreenState extends State<DashboardScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<PendingOrdersViewModel>( int orderId;
return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(), onModelReady: (model) => model.getPendingOrders(),
builder: builder:
(BuildContext context, PendingOrdersViewModel model, Widget child) => (BuildContext context, OrdersViewModel model, Widget child) =>
Scaffold( AppScaffold(
backgroundColor: Color(0xffF4F9FA),
body: Column( body: Column(
// mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -31,7 +37,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
padding: EdgeInsets.all(16.0), padding: EdgeInsets.all(16.0),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Column( SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
@ -44,16 +51,19 @@ class _DashboardScreenState extends State<DashboardScreen> {
child: Text( child: Text(
'Driver Name', 'Driver Name',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontSize: 25.0), fontWeight: FontWeight.w400,
fontSize: 25.0),
), ),
), ),
], ],
), ),
),
], ],
), ),
), ),
Padding( Padding(
padding: EdgeInsets.all(16.0), padding: EdgeInsets.all(16.0),
child: SafeArea(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
CircleAvatar( CircleAvatar(
@ -71,19 +81,27 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
), ),
),
], ],
), ),
Row( Row(
children: <Widget>[ children: <Widget>[
Column( Expanded(
child: Column(
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 12.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.43, .of(context)
.size
.height * 0.15,
width: MediaQuery
.of(context)
.size
.width * 0.44,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient( gradient: LinearGradient(
colors: [Color(0xff17AFB8), Color(0xff49C1BC)]), colors: [Color(0xff17AFB8), Color(0xff49C1BC)]),
), ),
@ -91,10 +109,10 @@ class _DashboardScreenState extends State<DashboardScreen> {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(10.0),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Text( Text(
'You Have', 'You Have',
@ -106,15 +124,19 @@ class _DashboardScreenState extends State<DashboardScreen> {
style: TextStyle( style: TextStyle(
color: Colors.white, fontSize: 25.0), color: Colors.white, fontSize: 25.0),
), ),
Text( Expanded(
child: Text(
'Undelivered \n Packages', 'Undelivered \n Packages',
style: TextStyle( style: TextStyle(
color: Colors.white, fontSize: 10.0), color: Colors.white,
fontSize: 10.0),
),
) )
], ],
), ),
), ),
Padding( Expanded(
child: Padding(
padding: EdgeInsets.all(4.0), padding: EdgeInsets.all(4.0),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -123,16 +145,21 @@ 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: height: MediaQuery
MediaQuery.of(context).size.height * .of(context)
.size
.height *
0.09, 0.09,
width: width: MediaQuery
MediaQuery.of(context).size.width * .of(context)
.size
.width *
0.20, 0.20,
//fit: BoxFit.cover, //fit: BoxFit.cover,
)), )),
], ],
), ),
),
) )
], ],
), ),
@ -140,22 +167,27 @@ class _DashboardScreenState extends State<DashboardScreen> {
) )
], ],
), ),
),
Column( Column(
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 12.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.43, width: MediaQuery
.of(context)
.size
.width * 0.44,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient( gradient: LinearGradient(
colors: [Color(0xff17AFB8), Color(0xff49C1BC)]), colors: [Color(0xff17AFB8), Color(0xff49C1BC)]),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Padding( Expanded(
child: Padding(
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
@ -171,14 +203,18 @@ class _DashboardScreenState extends State<DashboardScreen> {
style: TextStyle( style: TextStyle(
color: Colors.white, fontSize: 25.0), color: Colors.white, fontSize: 25.0),
), ),
Text( Expanded(
child: Text(
'unWanted\n Packge', 'unWanted\n Packge',
style: TextStyle( style: TextStyle(
color: Colors.white, fontSize: 10.0), color: Colors.white,
fontSize: 10.0),
),
) )
], ],
), ),
), ),
),
Padding( Padding(
padding: EdgeInsets.only(right: 9.5), padding: EdgeInsets.only(right: 9.5),
child: Column( child: Column(
@ -187,9 +223,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
Image.asset( Image.asset(
'assets/images/open_box.png', 'assets/images/open_box.png',
height: MediaQuery.of(context).size.height * height: MediaQuery.of(context).size.height *
0.11, 0.10,
width: MediaQuery.of(context).size.width * width: MediaQuery.of(context).size.width *
0.24, 0.20,
scale: 0.9, scale: 0.9,
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
@ -205,16 +241,22 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
Padding( Padding(
padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 12.0), padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 15.0),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: InkWell( child: InkWell(
child: Container( child: Container(
height: 140, height: MediaQuery
width: 350, .of(context)
.size
.height * 0.16,
width: MediaQuery
.of(context)
.size
.width * 0.50,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient(colors: [ gradient: LinearGradient(colors: [
Color(0xff48C0BC), Color(0xff48C0BC),
Color(0xff17AFB8) Color(0xff17AFB8)
@ -228,10 +270,16 @@ 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
fit: BoxFit.fitHeight, .of(context)
.size
.height * 0.14,
fit: BoxFit.cover,
) )
], ],
), ),
@ -239,11 +287,16 @@ class _DashboardScreenState extends State<DashboardScreen> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text( InkWell(
onTap: () {
_scanQrAndGetPatient(context, model);
},
child: Text(
'SCAN', 'SCAN',
style: TextStyle( style: TextStyle(
fontSize: 35.0, color: Colors.white), fontSize: 35.0, color: Colors.white),
), ),
),
Padding( Padding(
padding: EdgeInsets.only(top: 6.0), padding: EdgeInsets.only(top: 6.0),
child: Text( child: Text(
@ -267,7 +320,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
), ),
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0, vertical: 10.0), padding: EdgeInsets.symmetric(horizontal: 12.0, vertical: 1.0),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
@ -308,47 +361,60 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
), ),
Column( Expanded(
children: <Widget>[ child: ListView.builder(
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,
2, 3,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return Padding(
onTap: () { padding: EdgeInsets.symmetric(horizontal: 12.2),
Navigator.push( child: InkWell(
context, MaterialPageRoute(builder: (context) =>
InformationPage(model.orders[index])));
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: RoundedContainer( child: RoundedContainer(
height: SizeConfig.heightMultiplier * 10.5, height: MediaQuery
.of(context)
.size
.height * 0.108,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Column( Expanded(
flex: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: EdgeInsets.only(left: 22.0), padding: EdgeInsets.only(left: 22.0),
child: Image.asset( child: Image.asset(
'assets/images/location.png'), 'assets/images/location.png',
height: MediaQuery
.of(context)
.size
.height *
0.10,
width: MediaQuery
.of(context)
.size
.width *
0.09,
),
) )
], ],
), ),
),
if (model.orders.length != 0) if (model.orders.length != 0)
Column( Expanded(
crossAxisAlignment: CrossAxisAlignment flex: 3,
.start, child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text( Text(
model.orders[index].firstName + model.orders[index].firstName +
' ' + ' ' +
model.orders[index].lastName, model.orders[index].lastName,
style: TextStyle(fontSize: 20.0), style: TextStyle(fontSize: 18.0),
), ),
Text( Text(
model.orders[index].mobileNumber, model.orders[index].mobileNumber,
@ -357,48 +423,78 @@ class _DashboardScreenState extends State<DashboardScreen> {
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 15.0), fontSize: 15.0),
), ),
Text( Expanded(
'Olaya ST, Behind kfc next to king-\ndom tower 2nd floor n.o 247', child: Text(
'Olaya ST, Behind kfc next to king ,Olaya ST ',
style: TextStyle(color: Colors.black45), style: TextStyle(color: Colors.black45),
) ),
),
], ],
), ),
),
Padding( Padding(
padding: EdgeInsets.all(10.0), padding: EdgeInsets.all(10.0),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
CircleAvatar( Expanded(
child: CircleAvatar(
backgroundColor: Colors.black45, backgroundColor: Colors.black45,
radius: 30.0, radius: 28.0,
child: CircleAvatar( child: CircleAvatar(
backgroundColor: Colors.white, backgroundColor: Colors.white,
maxRadius: 28.9, maxRadius: 25.1,
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Text( child: Text(
'3 K.m \n away', '3 K.m \n away',
style: TextStyle( style: TextStyle(
color: Color(0xff30B7B9), color: Color(0xff30B7B9),
fontSize: 14.0), fontSize: 12.5,
fontWeight: FontWeight.w600),
),
), ),
), ),
), ),
) )
], ],
), ),
) ),
], ],
), ),
), ),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
InformationPage(model.orders[index])));
},
), ),
); );
}) },
], ),
) )
], ],
), ),
), ),
); );
} }
_scanQrAndGetPatient(BuildContext context, OrdersViewModel model) async {
/// When give qr we will change this method to get data
/// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result
var result = await BarcodeScanner.scan();
// if (result.rawContent == "") {
List<String> listOfParams = result.rawContent.split(',');
String patientType = "1";
await model.insertOrder();
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
} else {
AppToast.showSuccessToast(message: "Order Added");
}
}
} }

@ -1,9 +1,9 @@
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/viewModels/pending_orders_view_model.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
class OrdersListScreen extends StatefulWidget { class OrdersListScreen extends StatefulWidget {
@override @override
@ -13,10 +13,10 @@ class OrdersListScreen extends StatefulWidget {
class _OrdersListScreenState extends State<OrdersListScreen> { class _OrdersListScreenState extends State<OrdersListScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<PendingOrdersViewModel>( return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(), onModelReady: (model) => model.getPendingOrders(),
builder: builder:
(BuildContext context, PendingOrdersViewModel model, Widget child) => (BuildContext context, OrdersViewModel model, Widget child) =>
Scaffold( Scaffold(
appBar: AppBar( appBar: AppBar(
centerTitle: true, centerTitle: true,
@ -25,6 +25,131 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
'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(
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
? MediaQuery
.of(context)
.size
.height * 0.107
: MediaQuery
.of(context)
.size
.height * 0.18,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
flex: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 22.0),
child: Image.asset(
'assets/images/location.png',
height:
MediaQuery
.of(context)
.size
.height *
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),
),
)
],
),
),
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,10 +49,34 @@ 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 => localizedValues['enterCredentialsMsg'][locale.languageCode];
String get forgotPassword => localizedValues['forgotPassword'][locale.languageCode]; String get enterCredentialsMsg =>
localizedValues['enterCredentialsMsg'][locale.languageCode];
String get forgotPassword =>
localizedValues['forgotPassword'][locale.languageCode];
String get login => localizedValues['login'][locale.languageCode]; String get login => localizedValues['login'][locale.languageCode];
String get haveGreatDay =>
localizedValues['haveGreatDay'][locale.languageCode];
String get youHave => localizedValues['youHave'][locale.languageCode];
String get deliveredPackages =>
localizedValues['deliveredPackages'][locale.languageCode];
String get seeAll => localizedValues['seeAll'][locale.languageCode];
String get nearestDropOffs =>
localizedValues['nearestDropOffs'][locale.languageCode];
String get undeliveredPackages =>
localizedValues['undeliveredPackages'][locale.languageCode];
String get away => localizedValues['away'][locale.languageCode];
String get scan => localizedValues['scan'][locale.languageCode];
String get deliveryInfo => String get deliveryInfo =>
localizedValues['deliveryInfo'][locale.languageCode]; localizedValues['deliveryInfo'][locale.languageCode];

Loading…
Cancel
Save