Merge branch 'bottomsheet' into 'development'

Bottomsheet

See merge request Cloud_Solution/driver-app!36
logut
Elham 5 years ago
commit 5229718db7

@ -0,0 +1,179 @@
PODS:
- barcode_scan (0.0.1):
- Flutter
- MTBBarcodeScanner
- SwiftProtobuf
- connectivity (0.0.1):
- Flutter
- Reachability
- connectivity_for_web (0.1.0):
- Flutter
- connectivity_macos (0.0.1):
- Flutter
- device_info (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_flexible_toast (0.0.1):
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- hexcolor (0.0.1):
- Flutter
- image_cropper (0.0.3):
- Flutter
- TOCropViewController (~> 2.5.4)
- image_picker (0.0.1):
- Flutter
- local_auth (0.0.1):
- Flutter
- map_launcher (0.0.1):
- Flutter
- maps_launcher (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- path_provider_linux (0.0.1):
- Flutter
- "permission_handler (5.0.1+1)":
- Flutter
- Reachability (3.2)
- shared_preferences (0.0.1):
- Flutter
- shared_preferences_linux (0.0.1):
- Flutter
- shared_preferences_macos (0.0.1):
- Flutter
- shared_preferences_web (0.0.1):
- Flutter
- SwiftProtobuf (1.11.0)
- TOCropViewController (2.5.4)
- url_launcher (0.0.1):
- Flutter
- url_launcher_linux (0.0.1):
- Flutter
- url_launcher_macos (0.0.1):
- Flutter
- url_launcher_web (0.0.1):
- Flutter
DEPENDENCIES:
- barcode_scan (from `.symlinks/plugins/barcode_scan/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- connectivity_for_web (from `.symlinks/plugins/connectivity_for_web/ios`)
- connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`)
- Flutter (from `Flutter`)
- flutter_flexible_toast (from `.symlinks/plugins/flutter_flexible_toast/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- hexcolor (from `.symlinks/plugins/hexcolor/ios`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- map_launcher (from `.symlinks/plugins/map_launcher/ios`)
- maps_launcher (from `.symlinks/plugins/maps_launcher/ios`)
- path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`)
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`)
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
SPEC REPOS:
trunk:
- MTBBarcodeScanner
- Reachability
- SwiftProtobuf
- TOCropViewController
EXTERNAL SOURCES:
barcode_scan:
:path: ".symlinks/plugins/barcode_scan/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
connectivity_for_web:
:path: ".symlinks/plugins/connectivity_for_web/ios"
connectivity_macos:
:path: ".symlinks/plugins/connectivity_macos/ios"
device_info:
:path: ".symlinks/plugins/device_info/ios"
Flutter:
:path: Flutter
flutter_flexible_toast:
:path: ".symlinks/plugins/flutter_flexible_toast/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
hexcolor:
:path: ".symlinks/plugins/hexcolor/ios"
image_cropper:
:path: ".symlinks/plugins/image_cropper/ios"
image_picker:
:path: ".symlinks/plugins/image_picker/ios"
local_auth:
:path: ".symlinks/plugins/local_auth/ios"
map_launcher:
:path: ".symlinks/plugins/map_launcher/ios"
maps_launcher:
:path: ".symlinks/plugins/maps_launcher/ios"
path_provider_linux:
:path: ".symlinks/plugins/path_provider_linux/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios"
shared_preferences_linux:
:path: ".symlinks/plugins/shared_preferences_linux/ios"
shared_preferences_macos:
:path: ".symlinks/plugins/shared_preferences_macos/ios"
shared_preferences_web:
:path: ".symlinks/plugins/shared_preferences_web/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
url_launcher_linux:
:path: ".symlinks/plugins/url_launcher_linux/ios"
url_launcher_macos:
:path: ".symlinks/plugins/url_launcher_macos/ios"
url_launcher_web:
:path: ".symlinks/plugins/url_launcher_web/ios"
SPEC CHECKSUMS:
barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
connectivity_for_web: 2b8584556930d4bd490d82b836bcf45067ce345b
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_flexible_toast: 0547e740cae0c33bb7c51bcd931233f4584e1143
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
hexcolor: fdfb9c4258ad96e949c2dbcdf790a62194b8aa89
image_cropper: c8f9b4157933c7bb965a66d1c5e6c8fd408c6eb4
image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
map_launcher: e325db1261d029ff33e08e03baccffe09593ffea
maps_launcher: eae38ee13a9c3f210fa04e04bb4c073fa4c6ed92
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4
permission_handler: eac8e15b4a1a3fba55b761d19f3f4e6b005d15b6
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
SwiftProtobuf: f889fe5772f90ef7d7b8aac352d1fddf39650713
TOCropViewController: 2a1ae1242600b1f2d996fd91a5268b2309a33b5c
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
PODFILE CHECKSUM: c34e2287a9ccaa606aeceab922830efb9a6ff69a
COCOAPODS: 1.9.3

@ -6,15 +6,15 @@ const GET_PROJECT = '/Lists.svc/REST/GetProject';
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';
const UPDATE_ORDER_STATUS =
'/Patients.svc/REST/PatientER_Delivery_UpdateOrderStatus';
/// Body Constant
const CHANNEL = 9;
/// design constant
const MAX_SMALL_SCREEN = 660;
class AppGlobal {
static BuildContext context;
}

@ -0,0 +1,44 @@
class UpdateOrderStatusRequestModel {
int deliveryOrderID;
int deliveryOrderStatus;
String rejectionReason;
String cancleReason;
int changeBy;
String tokenID;
String userID;
String mobileNo;
UpdateOrderStatusRequestModel(
{this.deliveryOrderID,
this.deliveryOrderStatus,
this.rejectionReason,
this.cancleReason,
this.changeBy,
this.tokenID,
this.userID,
this.mobileNo});
UpdateOrderStatusRequestModel.fromJson(Map<String, dynamic> json) {
deliveryOrderID = json['DeliveryOrderID'];
deliveryOrderStatus = json['DeliveryOrderStatus'];
rejectionReason = json['RejectionReason'];
cancleReason = json['CancleReason'];
changeBy = json['ChangeBy'];
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['DeliveryOrderStatus'] = this.deliveryOrderStatus;
data['RejectionReason'] = this.rejectionReason;
data['CancleReason'] = this.cancleReason;
data['ChangeBy'] = this.changeBy;
data['TokenID'] = this.tokenID;
data['UserID'] = this.userID;
data['MobileNo'] = this.mobileNo;
return data;
}
}

@ -1,6 +1,7 @@
import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_req_model.dart';
import 'package:driverapp/core/model/pending_orders/pending_orders_res_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/update_order_status_request_model.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/service/base_service.dart';
@ -9,15 +10,12 @@ class OrdersService extends BaseService {
List<PendingOrdersRes> get orders => _orders;
bool isOrderInserted;
bool isOrderStatusUpdated;
PendingOrders _requestGetPendingOrders = PendingOrders(
driverID: 1111,
searchKey: "",
pageSize: 0,
pageIndex: 0,
tokenID: "@dm!n",
userID: "1111",
mobileNo: "0541710575",
);
Future getPendingOrders() async {
@ -59,4 +57,22 @@ class OrdersService extends BaseService {
throw e;
}
}
Future updateOrderStatus(
UpdateOrderStatusRequestModel updateOrderStatusRequestModel) async {
hasError = false;
try {
await baseAppClient.post(UPDATE_ORDER_STATUS,
onSuccess: (dynamic response, int statusCode) {
isOrderStatusUpdated = response["PatientER_Delivery_IsOrderUpdated"];
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: updateOrderStatusRequestModel.toJson());
} catch (e) {
hasError = true;
super.error = error;
throw e;
}
}
}

@ -1,20 +1,22 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/pending_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/service/orders_service.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class OrdersViewModel extends BaseViewModel {
OrdersService _pendingOrdersService = locator<OrdersService>();
OrdersService _OrdersService = locator<OrdersService>();
List<PendingOrdersRes> get orders => _pendingOrdersService.orders;
List<PendingOrdersRes> get orders => _OrdersService.orders;
bool isBottomSheetAppear = false;
Future getPendingOrders() async {
setState(ViewState.Busy);
await _pendingOrdersService.getPendingOrders();
if (_pendingOrdersService.hasError) {
error = _pendingOrdersService.error;
await _OrdersService.getPendingOrders();
if (_OrdersService.hasError) {
error = _OrdersService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
@ -22,11 +24,33 @@ class OrdersViewModel extends BaseViewModel {
Future insertOrder() async {
setState(ViewState.ErrorLocal);
await _pendingOrdersService.insertOrder();
if (_pendingOrdersService.hasError) {
error = _pendingOrdersService.error;
await _OrdersService.insertOrder();
if (_OrdersService.hasError) {
error = _OrdersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
Future updateOrderStatus(
UpdateOrderStatusRequestModel updateOrderStatusRequestModel) async {
setState(ViewState.BusyLocal);
await _OrdersService.updateOrderStatus(updateOrderStatusRequestModel);
if (_OrdersService.hasError) {
error = _OrdersService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
showBottomSheet() {
isBottomSheetAppear = true;
setState(ViewState.Idle);
}
hideBottomSheet() {
isBottomSheetAppear = false;
setState(ViewState.Idle);
}
}

@ -64,7 +64,7 @@ class MyApp extends StatelessWidget {
backgroundColor: Color.fromRGBO(255, 255, 255, 1),
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Color.fromRGBO(69, 183, 174, 1.0),
primaryColor: Color(0xff3ABBBA),
cursorColor: Color.fromRGBO(78, 62, 253, 1.0),
iconTheme: IconThemeData(),
dividerColor: Color.fromRGBO(112, 112, 112, 1.0),

@ -237,7 +237,7 @@ class LoginPage extends StatelessWidget {
),
SizedBox(
height: 30,
)
),
],
))
],

File diff suppressed because one or more lines are too long

@ -1,3 +1,4 @@
import 'package:driverapp/config/size_config.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
@ -13,7 +14,9 @@ class ActionSheetButton extends StatelessWidget {
return InkWell(
onTap: onTap,
child: Container(
height: MediaQuery.of(context).size.height * 0.07,
height: SizeConfig.isMobilePortrait
? MediaQuery.of(context).size.height * 0.07
: MediaQuery.of(context).size.height * 0.14,
decoration: BoxDecoration(
border: Border.all(color: Colors.blue),
borderRadius: BorderRadius.circular(6),

@ -0,0 +1,93 @@
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart';
import 'package:driverapp/widgets/buttons/secondary_button.dart';
import 'package:flutter/material.dart';
import '../text.dart';
class CustomDialog extends StatelessWidget {
// final Widget child;
final String orderStatusText;
final Function callService;
final OrdersViewModel model;
CustomDialog({this.orderStatusText, this.callService, this.model});
@override
Widget build(BuildContext context) {
return BaseView<OrdersViewModel>(
builder: (_, model, w) => Center(
child: Container(
height: MediaQuery.of(context).size.height * 0.35,
width: MediaQuery.of(context).size.width * 0.95,
child: Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
elevation: 0.0,
backgroundColor: Colors.white,
child: Container(
child: Column(
children: <Widget>[
SizedBox(
height: 30,
),
Text(
'you have selected:',
style: TextStyle(
fontWeight: FontWeight.w500,
color: Colors.black,
fontSize: 15.0),
),
Text(
orderStatusText,
style: TextStyle(
color: Theme.of(context).primaryColor, fontSize: 18.0),
),
SizedBox(
height: 40,
),
FractionallySizedBox(
widthFactor: 0.8,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Texts(
'Are you sure?',
color: Colors.black,
fontSize: 20,
),
SizedBox(
height: 10,
),
SecondaryButton(
label: "Confirm",
loading: model.state == ViewState.BusyLocal,
onTap: () {
model.setState(ViewState.BusyLocal);
callService();
},
),
SizedBox(
height: 10,
),
SecondaryButton(
label: "Cancel",
onTap: () {
model.hideBottomSheet();
Navigator.of(context).pop();
},
),
],
),
)
],
),
),
),
),
),
);
}
}
Loading…
Cancel
Save