Merge branch 'development' into 'master'

Development

See merge request Cloud_Solution/driver-app!112
barcode_scanner
Mohammad Aljammal 5 years ago
commit 566fd360e0

@ -13,15 +13,17 @@ import 'package:location/location.dart';
class OrdersService extends BaseService { class OrdersService extends BaseService {
List<PendingOrdersRes> _orders = List(); List<PendingOrdersRes> _orders = List();
List<PendingOrdersRes> _nextOrdersList = List(); List<PendingOrdersRes> _nextOrdersList = List();
List<DeliverdOrderResModel> _deliverdOrderList = List(); List<DeliverdOrderResModel> _deliveredOrderList = List();
List<PendingOrdersRes> get orders => _orders; List<PendingOrdersRes> get orders => _orders;
List<DeliverdOrderResModel> get deliverdOrderList => _deliverdOrderList;
List<DeliverdOrderResModel> get deliveredOrderList => _deliveredOrderList;
List<PendingOrdersRes> get nextOrdersList => _nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _nextOrdersList;
bool isOrderInserted; bool isOrderInserted;
bool isOrderStatusUpdated; bool isOrderStatusUpdated;
DeliverdOrderModel _requestGetDeliverdOrders = DeliverdOrderModel( DeliverdOrderModel _requestGetDeliveredOrders = DeliverdOrderModel(
searchKey: "", searchKey: "",
pageSize: 0, pageSize: 0,
pageIndex: 0, pageIndex: 0,
@ -30,7 +32,6 @@ class OrdersService extends BaseService {
); );
Future getPendingOrders() async { Future getPendingOrders() async {
// if (await Utils.isLocationPermissionGranted()) {
LocationData loc = await Utils.getLocation(); LocationData loc = await Utils.getLocation();
if (loc != null) { if (loc != null) {
@ -117,7 +118,7 @@ class OrdersService extends BaseService {
} }
} }
Future getDeliverdList() async { Future getDeliveredList() async {
LocationData loc = await Utils.getLocation(); LocationData loc = await Utils.getLocation();
PendingOrders _requestGetPendingOrders = PendingOrders( PendingOrders _requestGetPendingOrders = PendingOrders(
searchKey: "", searchKey: "",
@ -126,23 +127,26 @@ class OrdersService extends BaseService {
latitude: loc.latitude.toString(), latitude: loc.latitude.toString(),
longitude: loc.longitude.toString(), longitude: loc.longitude.toString(),
); );
hasError = false; if (loc != null) {
try { hasError = false;
await baseAppClient.post(GET_ALL_DELIVERD_ORDER, try {
onSuccess: (dynamic response, int statusCode) { await baseAppClient.post(GET_ALL_DELIVERD_ORDER,
_deliverdOrderList.clear(); onSuccess: (dynamic response, int statusCode) {
response['PatientER_Delivery_GetAllDeliverdOrderList'].forEach((order) { _deliveredOrderList.clear();
_deliverdOrderList.add(DeliverdOrderResModel.fromJson(order)); response['PatientER_Delivery_GetAllDeliverdOrderList']
}); .forEach((order) {
}, onFailure: (String error, int statusCode) { _deliveredOrderList.add(DeliverdOrderResModel.fromJson(order));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPendingOrders.toJson());
} catch (e) {
hasError = true; hasError = true;
super.error = error; super.error = error;
}, body: _requestGetPendingOrders.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e; throw e;
}
} }
} }
} }

@ -1,11 +1,11 @@
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/orders/deliverd_order_req_model.dart'; import 'package:driverapp/core/model/orders/deliverd_order_res_model.dart';
import 'package:driverapp/core/model/orders/next_order_request_model.dart'; import 'package:driverapp/core/model/orders/next_order_request_model.dart';
import 'package:driverapp/core/model/orders/pending_orders_res_model.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/orders/update_order_status_request_model.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart'; import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/service/orders_service.dart'; import 'package:driverapp/core/service/orders_service.dart';
import 'package:driverapp/core/model/orders/deliverd_order_res_model.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
@ -15,7 +15,7 @@ class OrdersViewModel extends BaseViewModel {
List<PendingOrdersRes> get orders => _ordersService.orders; List<PendingOrdersRes> get orders => _ordersService.orders;
List<DeliverdOrderResModel> get deliverdOrders => List<DeliverdOrderResModel> get deliverdOrders =>
_ordersService.deliverdOrderList; _ordersService.deliveredOrderList;
List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList;
bool isBottomSheetAppear = false; bool isBottomSheetAppear = false;
@ -32,7 +32,7 @@ class OrdersViewModel extends BaseViewModel {
Future getDeliverdOrders() async { Future getDeliverdOrders() async {
setState(ViewState.Busy); setState(ViewState.Busy);
await _ordersService.getDeliverdList(); await _ordersService.getDeliveredList();
if (_ordersService.hasError) { if (_ordersService.hasError) {
error = _ordersService.error; error = _ordersService.error;
setState(ViewState.Error); setState(ViewState.Error);

@ -45,7 +45,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
void initState() { void initState() {
super.initState(); super.initState();
// TODO return it // TODO return it
// Utils.getLocationPermission(); Utils.getLocation();
} }
@override @override
@ -55,210 +55,98 @@ class _DashboardScreenState extends State<DashboardScreen> {
onModelReady: (model) => model.getPendingOrders(), onModelReady: (model) => model.getPendingOrders(),
builder: (BuildContext context, OrdersViewModel model, Widget child) => builder: (BuildContext context, OrdersViewModel model, Widget child) =>
AppScaffold( AppScaffold(
body: Container( body: SingleChildScrollView(
child: Column( child: Container(
mainAxisSize: MainAxisSize.min, height: MediaQuery.of(context).size.height * 1.6,
children: <Widget>[ child: Column(
Row( children: <Widget>[
mainAxisAlignment: MainAxisAlignment.spaceBetween, Row(
children: <Widget>[ mainAxisAlignment: MainAxisAlignment.spaceBetween,
Padding( children: <Widget>[
padding: EdgeInsets.all(16.0), Padding(
child: Column( padding: EdgeInsets.all(16.0),
children: <Widget>[
SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
TranslationBase.of(context).haveGreatDay,
style: TextStyle(
fontSize: 14.5,
color: Color(0xff636363),
fontWeight: FontWeight.w300),
),
Padding(
padding: EdgeInsets.only(top: 4.5),
child: Text(
_authenticationViewModel.user.userName,
style: TextStyle(
fontSize: 22.0,
color: Hexcolor("#343333"),
fontWeight: FontWeight.bold),
),
),
],
),
),
],
),
),
Padding(
padding: EdgeInsets.all(16.0),
child: SafeArea(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
InkWell( SafeArea(
child: CircleAvatar( child: Column(
radius: 25.5, mainAxisAlignment: MainAxisAlignment.start,
backgroundColor: Color(0xff30B7B9), crossAxisAlignment: CrossAxisAlignment.start,
child: CircleAvatar(
backgroundColor: Color(0xff30B7B9),
maxRadius: 26.0,
child: Image.asset(
'assets/images/driver.png',
fit: BoxFit.contain,
),
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SettingPage(
driverName: _authenticationViewModel
.user.userName,
driverID: _authenticationViewModel
.user.userID)));
},
),
],
),
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Container(
height: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height * 0.16
: MediaQuery.of(context).size.height * 0.30,
width: MediaQuery.of(context).size.width * 0.44,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0),
gradient: LINEAR_GRADIENT,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Expanded( Text(
child: Padding( TranslationBase.of(context).haveGreatDay,
padding: EdgeInsets.all(2.0), style: TextStyle(
child: Column( fontSize: 14.5,
mainAxisAlignment: color: Color(0xff636363),
MainAxisAlignment.spaceEvenly, fontWeight: FontWeight.w300),
children: <Widget>[
Text(
TranslationBase.of(context).youHave,
style: TextStyle(
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier *
2.2
: SizeConfig.textMultiplier *
1.3,
),
),
Text(
'5',
style: TextStyle(
color: Colors.white,
fontSize:
SizeConfig.textMultiplier *
3.0),
),
Text(
TranslationBase.of(context)
.undeliveredPackages,
style: TextStyle(
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier *
2.2
: SizeConfig.textMultiplier *
1.3,
),
)
],
),
),
), ),
Padding( Padding(
padding: EdgeInsets.only(right: 9.5), padding: EdgeInsets.only(top: 4.5),
child: Container( child: Text(
width: 100, _authenticationViewModel.user.userName,
height: 100, style: TextStyle(
decoration: BoxDecoration( fontSize: 22.0,
color: Colors.white10, color: Hexcolor("#343333"),
shape: BoxShape.circle), fontWeight: FontWeight.bold),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Image.asset(
'assets/images/closed_box.png',
height: MediaQuery.of(context)
.orientation ==
Orientation.portrait
? MediaQuery.of(context)
.size
.height *
0.09
: MediaQuery.of(context)
.size
.height *
0.20,
width: MediaQuery.of(context)
.size
.width *
0.20,
scale: 0.9,
fit: BoxFit.contain,
),
],
),
), ),
), ),
], ],
), ),
), ),
) ],
], ),
), ),
), Padding(
Expanded( padding: EdgeInsets.all(16.0),
child: Column( child: SafeArea(
children: <Widget>[ child: Column(
Padding( children: <Widget>[
padding: EdgeInsets.symmetric(horizontal: 10.0), InkWell(
child: Container( child: CircleAvatar(
height: MediaQuery.of(context).orientation == radius: 25.5,
Orientation.portrait backgroundColor: Color(0xff30B7B9),
? MediaQuery.of(context).size.height * 0.16 child: CircleAvatar(
: MediaQuery.of(context).size.height * 0.30, backgroundColor: Color(0xff30B7B9),
width: MediaQuery.of(context).size.width * 0.45, maxRadius: 26.0,
decoration: BoxDecoration( child: Image.asset(
borderRadius: BorderRadius.circular(15.0), 'assets/images/driver.png',
gradient: LINEAR_GRADIENT, fit: BoxFit.contain,
),
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SettingPage(
driverName: _authenticationViewModel
.user.userName,
driverID: _authenticationViewModel
.user.userID)));
},
), ),
child: InkWell( ],
onTap: () => Navigator.push( ),
context, ),
MaterialPageRoute( ),
builder: (context) => ],
DeliverdOrdersPage())), ),
Row(
children: <Widget>[
Expanded(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Container(
height: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height * 0.16
: MediaQuery.of(context).size.height * 0.30,
width: MediaQuery.of(context).size.width * 0.44,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0),
gradient: LINEAR_GRADIENT,
),
child: Row( child: Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
@ -284,7 +172,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
), ),
Text( Text(
'3', '5',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: fontSize:
@ -293,7 +181,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
Text( Text(
TranslationBase.of(context) TranslationBase.of(context)
.deliveredPackages, .undeliveredPackages,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: MediaQuery.of(context) fontSize: MediaQuery.of(context)
@ -315,15 +203,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
width: 100, width: 100,
height: 100, height: 100,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white10, color: Colors.white10,
shape: BoxShape.circle, shape: BoxShape.circle),
),
child: Column( child: Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.center, MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/opend_box.png', 'assets/images/closed_box.png',
height: MediaQuery.of(context) height: MediaQuery.of(context)
.orientation == .orientation ==
Orientation.portrait Orientation.portrait
@ -349,170 +236,301 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
), ),
), )
) ],
], ),
), ),
),
],
),
Padding(
padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 15.0),
child: Row(
children: <Widget>[
Expanded( Expanded(
child: InkWell( child: Column(
onTap: () { children: <Widget>[
_scanQrAndGetPatient(context, model); Padding(
}, padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Container( child: Container(
height: MediaQuery.of(context).orientation == height: MediaQuery.of(context).orientation ==
Orientation.portrait Orientation.portrait
? MediaQuery.of(context).size.height * 0.18 ? MediaQuery.of(context).size.height * 0.16
: MediaQuery.of(context).size.height * 0.30, : MediaQuery.of(context).size.height * 0.30,
width: MediaQuery.of(context).size.width * 0.50, width: MediaQuery.of(context).size.width * 0.45,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LINEAR_GRADIENT, gradient: LINEAR_GRADIENT,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(
'assets/images/qr_code.png',
width: MediaQuery.of(context).size.width *
0.26,
height: MediaQuery.of(context)
.orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height *
0.14
: MediaQuery.of(context).size.height *
0.28,
fit: BoxFit.contain,
)
],
), ),
Column( child: InkWell(
mainAxisAlignment: onTap: () => Navigator.push(
MainAxisAlignment.spaceEvenly, context,
crossAxisAlignment: CrossAxisAlignment.start, MaterialPageRoute(
children: <Widget>[ builder: (context) =>
Padding( DeliverdOrdersPage())),
padding: EdgeInsets.only(top: 8.0), child: Row(
child: Text( mainAxisAlignment:
TranslationBase.of(context).scan, MainAxisAlignment.spaceBetween,
style: TextStyle( children: <Widget>[
fontSize: MediaQuery.of(context) Expanded(
.orientation == child: Padding(
Orientation.landscape padding: EdgeInsets.all(2.0),
? SizeConfig.textMultiplier * 6.0 child: Column(
: SizeConfig.textMultiplier * 4.0, mainAxisAlignment:
color: Colors.white, MainAxisAlignment.spaceEvenly,
fontWeight: FontWeight.w400, children: <Widget>[
Text(
TranslationBase.of(context)
.youHave,
style: TextStyle(
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig
.textMultiplier *
2.2
: SizeConfig
.textMultiplier *
1.3,
),
),
Text(
'3',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig
.textMultiplier *
3.0),
),
Text(
TranslationBase.of(context)
.deliveredPackages,
style: TextStyle(
color: Colors.white,
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig
.textMultiplier *
2.2
: SizeConfig
.textMultiplier *
1.3,
),
)
],
),
), ),
), ),
), Padding(
Padding( padding: EdgeInsets.only(right: 9.5),
padding: EdgeInsets.only(top: 0.0), child: Container(
child: Text( width: 100,
TranslationBase.of(context) height: 100,
.toAddPackageToQue, decoration: BoxDecoration(
style: TextStyle( color: Colors.white10,
fontSize: MediaQuery.of(context) shape: BoxShape.circle,
.orientation == ),
Orientation.landscape child: Column(
? SizeConfig.textMultiplier * 3.0 mainAxisAlignment:
: SizeConfig.textMultiplier * 2.0, MainAxisAlignment.center,
color: Colors.white, children: <Widget>[
letterSpacing: 0.2, Image.asset(
wordSpacing: 0.5, 'assets/images/opend_box.png',
height: MediaQuery.of(context)
.orientation ==
Orientation.portrait
? MediaQuery.of(context)
.size
.height *
0.09
: MediaQuery.of(context)
.size
.height *
0.20,
width: MediaQuery.of(context)
.size
.width *
0.20,
scale: 0.9,
fit: BoxFit.contain,
),
],
),
), ),
), ),
), ],
], ),
) ),
], ),
), )
), ],
), ),
) ),
], ],
), ),
), Padding(
Padding( padding:
padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 1.0), EdgeInsets.symmetric(vertical: 16.0, horizontal: 15.0),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[
children: <Widget>[ Expanded(
Column( child: InkWell(
children: <Widget>[ onTap: () {
Text(TranslationBase.of(context).nearestDropOffs, _scanQrAndGetPatient(context, model);
style: TextStyle( },
fontSize: 18.0, child: Container(
color: Hexcolor("#343333"), height: MediaQuery.of(context).orientation ==
fontWeight: FontWeight.bold)), Orientation.portrait
], ? MediaQuery.of(context).size.height * 0.18
), : MediaQuery.of(context).size.height * 0.30,
if (model.state == ViewState.Idle) width: MediaQuery.of(context).size.width * 0.50,
Column( decoration: BoxDecoration(
mainAxisAlignment: MainAxisAlignment.center, borderRadius: BorderRadius.circular(15.0),
children: <Widget>[ gradient: LINEAR_GRADIENT,
InkWell( ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[ children: <Widget>[
Text( Column(
TranslationBase.of(context).seeAll, mainAxisAlignment: MainAxisAlignment.center,
style: TextStyle( children: <Widget>[
fontSize: 14.5, color: Color(0xff42B6AD)), Image.asset(
), 'assets/images/qr_code.png',
Icon( width: MediaQuery.of(context).size.width *
Icons.arrow_forward_ios, 0.26,
size: 15.0, height: MediaQuery.of(context)
color: Color(0xff42B6AD), .orientation ==
Orientation.portrait
? MediaQuery.of(context).size.height *
0.14
: MediaQuery.of(context).size.height *
0.28,
fit: BoxFit.contain,
)
],
), ),
Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 8.0),
child: Text(
TranslationBase.of(context).scan,
style: TextStyle(
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier * 6.0
: SizeConfig.textMultiplier * 4.0,
color: Colors.white,
fontWeight: FontWeight.w400,
),
),
),
Padding(
padding: EdgeInsets.only(top: 0.0),
child: Text(
TranslationBase.of(context)
.toAddPackageToQue,
style: TextStyle(
fontSize: MediaQuery.of(context)
.orientation ==
Orientation.landscape
? SizeConfig.textMultiplier * 3.0
: SizeConfig.textMultiplier * 2.0,
color: Colors.white,
letterSpacing: 0.2,
wordSpacing: 0.5,
),
),
),
],
)
], ],
), ),
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OrdersListScreen()),
),
), ),
),
)
],
),
),
Padding(
padding:
EdgeInsets.symmetric(horizontal: 20.0, vertical: 1.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Column(
children: <Widget>[
Text(TranslationBase.of(context).nearestDropOffs,
style: TextStyle(
fontSize: 18.0,
color: Hexcolor("#343333"),
fontWeight: FontWeight.bold)),
], ],
), ),
], if (model.state == ViewState.Idle)
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
child: Row(
children: <Widget>[
Text(
TranslationBase.of(context).seeAll,
style: TextStyle(
fontSize: 14.5,
color: Color(0xff42B6AD)),
),
Icon(
Icons.arrow_forward_ios,
size: 15.0,
color: Color(0xff42B6AD),
),
],
),
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OrdersListScreen()),
),
),
],
),
],
),
), ),
), if (model.state == ViewState.Idle)
NetworkBaseView( model.orders.length == 0
baseViewModel: model, ? Text("There's No Orders To deliver")
child: Column( : Text(""),
children: <Widget>[ NetworkBaseView(
...List.generate( baseViewModel: model,
model.orders == null child: Expanded(
? 0 child: ListView.builder(
: model.orders.length < 3 ? model.orders.length : 3, shrinkWrap: true,
(index) => Padding( scrollDirection: Axis.vertical,
padding: EdgeInsets.symmetric(horizontal: 0.2), itemCount: model.orders == null
child: OrderInfoCard( ? 0
order: model.orders[index], : model.orders.length < 3 ? model.orders.length : 3,
onTap: () { itemBuilder: (BuildContext context, int index) {
Navigator.push( return Padding(
context, padding: EdgeInsets.symmetric(horizontal: 0.2),
MaterialPageRoute( child: OrderInfoCard(
builder: (context) => order: model.orders[index],
InformationPage( onTap: () {
item: model.orders[index], Navigator.push(
))); context,
}), MaterialPageRoute(
)) builder: (context) => InformationPage(
], item: model.orders[index],
)));
},
),
);
},
),
),
), ),
), ],
], ),
), ),
), ),
), ),
@ -537,5 +555,3 @@ class _DashboardScreenState extends State<DashboardScreen> {
} }
} }
} }

@ -1,3 +1,4 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/widgets/order/order_info_card.dart'; import 'package:driverapp/widgets/order/order_info_card.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.dart'; import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
@ -27,6 +28,10 @@ class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
if (model.state == ViewState.Idle)
model.deliverdOrders.length == 0
? Text("There's No Orders To deliver")
: Text(''),
NetworkBaseView( NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: Expanded( child: Expanded(
@ -38,7 +43,7 @@ class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
: model.deliverdOrders.length, : model.deliverdOrders.length,
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: OrderInfoCard( child: OrderInfoCard(
order: model.deliverdOrders[index], order: model.deliverdOrders[index],
)); ));

@ -1,3 +1,4 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/viewModels/orders_view_model.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/uitl/translations_delegate_base.dart'; import 'package:driverapp/uitl/translations_delegate_base.dart';
@ -28,6 +29,10 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
if (model.state == ViewState.Idle)
model.orders.length == 0
? Text("There's No Orders To deliver")
: Text(""),
Expanded( Expanded(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,

File diff suppressed because one or more lines are too long

@ -4,6 +4,7 @@ import 'package:driverapp/config/config.dart';
import 'package:driverapp/pages/setting/request_permission_page.dart'; import 'package:driverapp/pages/setting/request_permission_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:location/location.dart'; import 'package:location/location.dart';
import 'app_shared_preferences.dart'; import 'app_shared_preferences.dart';
@ -48,13 +49,9 @@ class Utils {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
} }
static isLocationPermissionGranted() async { static getLocation() async {
return (await location.hasPermission()) == PermissionStatus.granted; Location location = new Location();
} LocationData currentLocation;
static Location location = new Location();
static Future<PermissionStatus> getLocationPermission() async {
bool _serviceEnabled; bool _serviceEnabled;
PermissionStatus _permissionGranted; PermissionStatus _permissionGranted;
@ -67,12 +64,18 @@ class Utils {
} }
if (!_serviceEnabled) { if (!_serviceEnabled) {
// Route to another page and send to him message "You have to enable location" // Route to another page and send to him message "You have to enable location"
Navigator.pushReplacement(
AppGlobal.context,
MaterialPageRoute(
builder: (context) => RequestPermissionPage(),
),
);
} }
} }
_permissionGranted = await location.hasPermission(); _permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) { if (_permissionGranted == PermissionStatus.denied) {
// _permissionGranted = await location.requestPermission(); _permissionGranted = await location.requestPermission();
if (_permissionGranted == PermissionStatus.denied) { if (_permissionGranted == PermissionStatus.denied) {
// Route to another page and send to him message "You have to give Permission" // Route to another page and send to him message "You have to give Permission"
Navigator.pushReplacement( Navigator.pushReplacement(
@ -83,29 +86,26 @@ class Utils {
); );
//return _permissionGranted; //return _permissionGranted;
} else if (_permissionGranted == PermissionStatus.deniedForever) { } else if (_permissionGranted == PermissionStatus.deniedForever) {
AppSettings.openLocationSettings(); try {
SystemNavigator.pop();
AppSettings.openLocationSettings();
} catch (e) {
print(e);
}
// open setting page // open setting page
} else {
currentLocation = await location.getLocation();
return currentLocation;
} }
} else if (_permissionGranted == PermissionStatus.deniedForever) { } else if (_permissionGranted == PermissionStatus.deniedForever) {
SystemNavigator.pop();
AppSettings.openLocationSettings(); AppSettings.openLocationSettings();
// open setting page
}
return _permissionGranted;
}
static getLocation() async {
// AppGlobal.context
Location location = new Location();
LocationData currentLocation;
// await getLocationPermission();
try { // open setting page
} else {
currentLocation = await location.getLocation(); currentLocation = await location.getLocation();
} catch (e) { return currentLocation;
// await getLocationPermission();
print(e);
} }
return currentLocation;
} }
static formatStringToPascalCase(String name) { static formatStringToPascalCase(String name) {

Loading…
Cancel
Save