Merge branch 'development' into 'master'

Development

See merge request Cloud_Solution/driver-app!109
updates_new
Elham 6 years ago
commit e275f8420d

@ -5,6 +5,8 @@
In most cases you can leave this as-is, but you if you want to provide In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. --> FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application <application
android:name="io.flutter.app.FlutterApplication" android:name="io.flutter.app.FlutterApplication"
android:label="driver App" android:label="driver App"

@ -1,14 +1,14 @@
import 'package:driverapp/config/config.dart'; import 'package:driverapp/config/config.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_req_model.dart'; import 'package:driverapp/core/model/orders/pending_orders_req_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/base_service.dart'; import 'package:driverapp/core/service/base_service.dart';
import 'package:driverapp/core/model/orders/deliverd_order_req_model.dart';
import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/uitl/utils.dart';
import 'package:location/location.dart'; import 'package:location/location.dart';
import 'package:driverapp/core/model/orders/deliverd_order_res_model.dart';
class OrdersService extends BaseService { class OrdersService extends BaseService {
List<PendingOrdersRes> _orders = List(); List<PendingOrdersRes> _orders = List();
@ -30,32 +30,37 @@ class OrdersService extends BaseService {
); );
Future getPendingOrders() async { Future getPendingOrders() async {
// if (await Utils.isLocationPermissionGranted()) {
LocationData loc = await Utils.getLocation(); LocationData loc = await Utils.getLocation();
PendingOrders _requestGetPendingOrders = PendingOrders(
searchKey: "", if (loc != null) {
pageSize: 0, PendingOrders _requestGetPendingOrders = PendingOrders(
pageIndex: 0, searchKey: "",
latitude: loc.latitude.toString(), pageSize: 0,
longitude: loc.longitude.toString(), pageIndex: 0,
); latitude: loc.latitude.toString(),
hasError = false; longitude: loc.longitude.toString(),
try { );
await baseAppClient.post(GET_ALL_ORDERS, hasError = false;
onSuccess: (dynamic response, int statusCode) { try {
_orders.clear(); await baseAppClient.post(GET_ALL_ORDERS,
response['PatientER_Delivery_GetAllOrderList'].forEach((order) { onSuccess: (dynamic response, int statusCode) {
_orders.add(PendingOrdersRes.fromJson(order)); _orders.clear();
}); response['PatientER_Delivery_GetAllOrderList'].forEach((order) {
}, onFailure: (String error, int statusCode) { _orders.add(PendingOrdersRes.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;
}
} }
// }
} }
Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async { Future insertOrder(ScanQrRequestModel _scanQrRequestModel) async {

@ -41,6 +41,13 @@ class _DashboardScreenState extends State<DashboardScreen> {
super.didChangeDependencies(); super.didChangeDependencies();
} }
@override
void initState() {
super.initState();
// TODO return it
// Utils.getLocationPermission();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
int orderId; int orderId;
@ -49,8 +56,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
builder: (BuildContext context, OrdersViewModel model, Widget child) => builder: (BuildContext context, OrdersViewModel model, Widget child) =>
AppScaffold( AppScaffold(
body: Container( body: Container(
height: MediaQuery.of(context).size.height * .95, child: Column(
child: ListView( mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -482,28 +489,27 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
NetworkBaseView( NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: Expanded( child: Column(
child: ListView.builder( children: <Widget>[
shrinkWrap: true, ...List.generate(
scrollDirection: Axis.vertical, model.orders == null
itemCount: model.orders == null ? 0
? 0 : model.orders.length < 3 ? model.orders.length : 3,
: model.orders.length < 3 ? model.orders.length : 3, (index) => Padding(
itemBuilder: (BuildContext context, int index) { padding: EdgeInsets.symmetric(horizontal: 0.2),
return Padding( child: OrderInfoCard(
padding: EdgeInsets.symmetric(horizontal: 0.2), order: model.orders[index],
child: OrderInfoCard( onTap: () {
order: model.orders[index], Navigator.push(
onTap: () { context,
Navigator.push( MaterialPageRoute(
context, builder: (context) =>
MaterialPageRoute( InformationPage(
builder: (context) => InformationPage( item: model.orders[index],
model.orders[index]),),); )));
}), }),
); ))
}, ],
),
), ),
), ),
], ],

@ -4,7 +4,6 @@ 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/viewModels/orders_view_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart'; import 'package:driverapp/pages/base/base_view.dart';
import 'package:driverapp/pages/delivery/information_page.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/delivery/customer_brief_card.dart'; import 'package:driverapp/widgets/delivery/customer_brief_card.dart';
@ -14,6 +13,7 @@ import 'package:location/location.dart';
import '../../uitl/translations_delegate_base.dart'; import '../../uitl/translations_delegate_base.dart';
import '../../widgets/others/app_scaffold_widget.dart'; import '../../widgets/others/app_scaffold_widget.dart';
import 'information_page.dart';
class DeliveryConfirmedPage extends StatelessWidget { class DeliveryConfirmedPage extends StatelessWidget {
final PendingOrdersRes item; final PendingOrdersRes item;
@ -223,7 +223,8 @@ class DeliveryConfirmedPage extends StatelessWidget {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => InformationPage(model.nextOrdersList[0]), builder: (context) =>
InformationPage(item: model.nextOrdersList[0]),
), ),
); );
} }

File diff suppressed because one or more lines are too long

@ -1,84 +0,0 @@
import 'package:driverapp/pages/delivery/delivery_confirmed_page.dart';
import 'package:driverapp/pages/delivery/information_page.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart';
import 'package:driverapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:driverapp/widgets/drawer/app_drawer_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'home_page.dart';
class LandingPage extends StatefulWidget {
@override
_LandingPageState createState() => _LandingPageState();
}
class _LandingPageState extends State<LandingPage> {
int currentTab = 0;
PageController pageController;
_changeCurrentTab(int tab) {
setState(() {
currentTab = tab;
pageController.jumpToPage(tab);
});
}
@override
void initState() {
super.initState();
pageController = PageController(keepPage: true);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
textTheme: TextTheme(
headline6:
TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
),
title: Text(getText(currentTab).toUpperCase()),
leading: Builder(
builder: (BuildContext context) {
return IconButton(
icon: Icon(Icons.menu),
color: Colors.white,
onPressed: () => Scaffold.of(context).openDrawer(),
);
},
),
centerTitle: true,
),
drawer: SafeArea(child: AppDrawer()),
extendBody: true,
body: PageView(
physics: NeverScrollableScrollPhysics(),
controller: pageController,
children: [
HomePage(),
InformationPage(null),
DeliveryConfirmedPage(null),
Container()
],
),
bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab),
);
}
getText(currentTab) {
switch (currentTab) {
case 0:
return TranslationBase.of(context).home;
case 1:
return 'new One';
case 2:
return TranslationBase.of(context).booking;
case 3:
return TranslationBase.of(context).mySchedule;
case 4:
return TranslationBase.of(context).services;
}
}
}

@ -17,7 +17,7 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<OrdersViewModel>( return BaseView<OrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(), // onModelReady: (model) => model.getPendingOrders(),
builder: (BuildContext context, OrdersViewModel model, Widget child) => builder: (BuildContext context, OrdersViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: true, isShowAppBar: true,
@ -42,8 +42,9 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) => InformationPage(
InformationPage(model.orders[index]))); item: model.orders[index],
)));
}, },
), ),
); );

File diff suppressed because one or more lines are too long

@ -1,5 +1,9 @@
import 'package:app_settings/app_settings.dart';
import 'package:connectivity/connectivity.dart'; import 'package:connectivity/connectivity.dart';
import 'package:driverapp/config/config.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:location/location.dart'; import 'package:location/location.dart';
import 'app_shared_preferences.dart'; import 'app_shared_preferences.dart';
@ -21,7 +25,7 @@ class Utils {
/// Check The Internet Connection /// Check The Internet Connection
static Future<bool> checkConnection() async { static Future<bool> checkConnection() async {
ConnectivityResult connectivityResult = ConnectivityResult connectivityResult =
await (Connectivity().checkConnectivity()); await (Connectivity().checkConnectivity());
if ((connectivityResult == ConnectivityResult.mobile) || if ((connectivityResult == ConnectivityResult.mobile) ||
(connectivityResult == ConnectivityResult.wifi)) { (connectivityResult == ConnectivityResult.wifi)) {
return true; return true;
@ -44,9 +48,63 @@ class Utils {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
} }
static isLocationPermissionGranted() async {
return (await location.hasPermission()) == PermissionStatus.granted;
}
static Location location = new Location();
static Future<PermissionStatus> getLocationPermission() async {
bool _serviceEnabled;
PermissionStatus _permissionGranted;
_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
try {
_serviceEnabled = await location.requestService();
} catch (e) {
print(e);
}
if (!_serviceEnabled) {
// Route to another page and send to him message "You have to enable location"
}
}
_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
// _permissionGranted = await location.requestPermission();
if (_permissionGranted == PermissionStatus.denied) {
// Route to another page and send to him message "You have to give Permission"
Navigator.pushReplacement(
AppGlobal.context,
MaterialPageRoute(
builder: (context) => RequestPermissionPage(),
),
);
//return _permissionGranted;
} else if (_permissionGranted == PermissionStatus.deniedForever) {
AppSettings.openLocationSettings();
// open setting page
}
} else if (_permissionGranted == PermissionStatus.deniedForever) {
AppSettings.openLocationSettings();
// open setting page
}
return _permissionGranted;
}
static getLocation() async { static getLocation() async {
// AppGlobal.context
Location location = new Location(); Location location = new Location();
LocationData currentLocation = await location.getLocation(); LocationData currentLocation;
// await getLocationPermission();
try {
currentLocation = await location.getLocation();
} catch (e) {
// await getLocationPermission();
print(e);
}
return currentLocation; return currentLocation;
} }

@ -75,6 +75,9 @@ dependencies:
#gradient #gradient
gradient_app_bar: ^0.1.3 gradient_app_bar: ^0.1.3
app_settings: ^4.0.3

Loading…
Cancel
Save