Merge branch 'master' of gitlab.com:Cloud_Solution/driver-app into setting_branch
# Conflicts: # lib/pages/delivery/information_page.dartsetting_branch
commit
a928e9f995
@ -0,0 +1,158 @@
|
|||||||
|
class DeliverdOrderResModel {
|
||||||
|
int rowID;
|
||||||
|
int orderID;
|
||||||
|
String firstName;
|
||||||
|
String middleName;
|
||||||
|
String lastName;
|
||||||
|
int gender;
|
||||||
|
String nationalityID;
|
||||||
|
String mobileNumber;
|
||||||
|
String preferredLanguage;
|
||||||
|
int driverID;
|
||||||
|
int statusID;
|
||||||
|
bool ispaused;
|
||||||
|
int groupID;
|
||||||
|
String description;
|
||||||
|
String descriptionN;
|
||||||
|
double longitude;
|
||||||
|
double latitude;
|
||||||
|
Null amount;
|
||||||
|
String orderCreatedOn;
|
||||||
|
int ePharmacyOrderNo;
|
||||||
|
int projectID;
|
||||||
|
String appointmentNo;
|
||||||
|
String dischargeID;
|
||||||
|
String patientID;
|
||||||
|
bool patientOutSA;
|
||||||
|
int channel;
|
||||||
|
double distanceInKilometers;
|
||||||
|
List<ItemsQuantitiesList> itemsQuantitiesList;
|
||||||
|
|
||||||
|
DeliverdOrderResModel(
|
||||||
|
{this.rowID,
|
||||||
|
this.orderID,
|
||||||
|
this.firstName,
|
||||||
|
this.middleName,
|
||||||
|
this.lastName,
|
||||||
|
this.gender,
|
||||||
|
this.nationalityID,
|
||||||
|
this.mobileNumber,
|
||||||
|
this.preferredLanguage,
|
||||||
|
this.driverID,
|
||||||
|
this.statusID,
|
||||||
|
this.ispaused,
|
||||||
|
this.groupID,
|
||||||
|
this.description,
|
||||||
|
this.descriptionN,
|
||||||
|
this.longitude,
|
||||||
|
this.latitude,
|
||||||
|
this.amount,
|
||||||
|
this.orderCreatedOn,
|
||||||
|
this.ePharmacyOrderNo,
|
||||||
|
this.projectID,
|
||||||
|
this.appointmentNo,
|
||||||
|
this.dischargeID,
|
||||||
|
this.patientID,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.channel,
|
||||||
|
this.distanceInKilometers,
|
||||||
|
this.itemsQuantitiesList});
|
||||||
|
|
||||||
|
DeliverdOrderResModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
rowID = json['RowID'];
|
||||||
|
orderID = json['OrderID'];
|
||||||
|
firstName = json['FirstName'];
|
||||||
|
middleName = json['MiddleName'];
|
||||||
|
lastName = json['LastName'];
|
||||||
|
gender = json['Gender'];
|
||||||
|
nationalityID = json['NationalityID'];
|
||||||
|
mobileNumber = json['MobileNumber'];
|
||||||
|
preferredLanguage = json['PreferredLanguage'];
|
||||||
|
driverID = json['DriverID'];
|
||||||
|
statusID = json['StatusID'];
|
||||||
|
ispaused = json['Ispaused'];
|
||||||
|
groupID = json['GroupID'];
|
||||||
|
description = json['Description'];
|
||||||
|
descriptionN = json['DescriptionN'];
|
||||||
|
longitude = json['Longitude'];
|
||||||
|
latitude = json['Latitude'];
|
||||||
|
amount = json['Amount'];
|
||||||
|
orderCreatedOn = json['OrderCreatedOn'];
|
||||||
|
ePharmacyOrderNo = json['ePharmacyOrderNo'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
appointmentNo = json['AppointmentNo'];
|
||||||
|
dischargeID = json['DischargeID'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
distanceInKilometers = json['DistanceInKilometers'];
|
||||||
|
if (json['ItemsQuantitiesList'] != null) {
|
||||||
|
itemsQuantitiesList = new List<ItemsQuantitiesList>();
|
||||||
|
json['ItemsQuantitiesList'].forEach((v) {
|
||||||
|
itemsQuantitiesList.add(new ItemsQuantitiesList.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['RowID'] = this.rowID;
|
||||||
|
data['OrderID'] = this.orderID;
|
||||||
|
data['FirstName'] = this.firstName;
|
||||||
|
data['MiddleName'] = this.middleName;
|
||||||
|
data['LastName'] = this.lastName;
|
||||||
|
data['Gender'] = this.gender;
|
||||||
|
data['NationalityID'] = this.nationalityID;
|
||||||
|
data['MobileNumber'] = this.mobileNumber;
|
||||||
|
data['PreferredLanguage'] = this.preferredLanguage;
|
||||||
|
data['DriverID'] = this.driverID;
|
||||||
|
data['StatusID'] = this.statusID;
|
||||||
|
data['Ispaused'] = this.ispaused;
|
||||||
|
data['GroupID'] = this.groupID;
|
||||||
|
data['Description'] = this.description;
|
||||||
|
data['DescriptionN'] = this.descriptionN;
|
||||||
|
data['Longitude'] = this.longitude;
|
||||||
|
data['Latitude'] = this.latitude;
|
||||||
|
data['Amount'] = this.amount;
|
||||||
|
data['OrderCreatedOn'] = this.orderCreatedOn;
|
||||||
|
data['ePharmacyOrderNo'] = this.ePharmacyOrderNo;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
data['AppointmentNo'] = this.appointmentNo;
|
||||||
|
data['DischargeID'] = this.dischargeID;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['DistanceInKilometers'] = this.distanceInKilometers;
|
||||||
|
if (this.itemsQuantitiesList != null) {
|
||||||
|
data['ItemsQuantitiesList'] =
|
||||||
|
this.itemsQuantitiesList.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ItemsQuantitiesList {
|
||||||
|
String itemName;
|
||||||
|
String itemNameN;
|
||||||
|
int productID;
|
||||||
|
int quantity;
|
||||||
|
|
||||||
|
ItemsQuantitiesList(
|
||||||
|
{this.itemName, this.itemNameN, this.productID, this.quantity});
|
||||||
|
|
||||||
|
ItemsQuantitiesList.fromJson(Map<String, dynamic> json) {
|
||||||
|
itemName = json['ItemName'];
|
||||||
|
itemNameN = json['ItemNameN'];
|
||||||
|
productID = json['ProductID'];
|
||||||
|
quantity = json['Quantity'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['ItemName'] = this.itemName;
|
||||||
|
data['ItemNameN'] = this.itemNameN;
|
||||||
|
data['ProductID'] = this.productID;
|
||||||
|
data['Quantity'] = this.quantity;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,156 @@
|
|||||||
|
import 'package:driverapp/core/viewModels/orders_view_model.dart';
|
||||||
|
import 'package:driverapp/pages/delivery/information_page.dart';
|
||||||
|
import 'package:driverapp/widgets/data_display/circle-container.dart';
|
||||||
|
import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:driverapp/widgets/others/rounded_container.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:hexcolor/hexcolor.dart';
|
||||||
|
|
||||||
|
import '../base/base_view.dart';
|
||||||
|
|
||||||
|
class DeliverdOrdersPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_DeliverdOrdersPageState createState() => _DeliverdOrdersPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<OrdersViewModel>(
|
||||||
|
onModelReady: (model) => model.getDeliverdOrders(),
|
||||||
|
builder: (BuildContext context, OrdersViewModel model, Widget child) =>
|
||||||
|
AppScaffold(
|
||||||
|
isShowAppBar: true,
|
||||||
|
appBarTitle: 'Delivered List',
|
||||||
|
titleColor: Colors.black,
|
||||||
|
body: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ListView.builder(
|
||||||
|
shrinkWrap: true,
|
||||||
|
scrollDirection: Axis.vertical,
|
||||||
|
itemCount: model.deliverdOrders == null
|
||||||
|
? 0
|
||||||
|
: model.deliverdOrders.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 12.2),
|
||||||
|
child: InkWell(
|
||||||
|
child: RoundedContainer(
|
||||||
|
raduis: 25.0,
|
||||||
|
height: MediaQuery.of(context).orientation ==
|
||||||
|
Orientation.portrait
|
||||||
|
? MediaQuery.of(context).size.height * 0.120
|
||||||
|
: MediaQuery.of(context).size.height * 0.209,
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(left: 15.0, top: 14.0),
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/location.png',
|
||||||
|
height: MediaQuery.of(context)
|
||||||
|
.orientation ==
|
||||||
|
Orientation.portrait
|
||||||
|
? MediaQuery.of(context).size.height *
|
||||||
|
0.06
|
||||||
|
: MediaQuery.of(context).size.height *
|
||||||
|
0.11,
|
||||||
|
width: MediaQuery.of(context)
|
||||||
|
.orientation ==
|
||||||
|
Orientation.portrait
|
||||||
|
? MediaQuery.of(context).size.width *
|
||||||
|
0.05
|
||||||
|
: MediaQuery.of(context).size.width *
|
||||||
|
0.09,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (model.orders.length != 0)
|
||||||
|
Expanded(
|
||||||
|
flex: 5,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(top: 20.0),
|
||||||
|
child: Text(
|
||||||
|
model.deliverdOrders[index].firstName +
|
||||||
|
' ' +
|
||||||
|
model.orders[index].lastName,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0,
|
||||||
|
color: Hexcolor("#343333"),
|
||||||
|
fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
model.deliverdOrders[index].mobileNumber,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xff30B7B9),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 15.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
model.deliverdOrders[index].orderID
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
letterSpacing: 8.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.all(8.0),
|
||||||
|
child: CircleContainer(
|
||||||
|
child: Text(
|
||||||
|
model.deliverdOrders[index]
|
||||||
|
.distanceInKilometers
|
||||||
|
.toString() +
|
||||||
|
'\nK.m\naway',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xff42B6AD),
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
fontStyle: FontStyle.normal),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// onTap: () {
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(
|
||||||
|
// builder: (context) =>
|
||||||
|
// InformationPage(model.orders[index])));
|
||||||
|
// },
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,150 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:driverapp/app-icons/driver_app_icons.dart';
|
||||||
|
import 'package:driverapp/core/viewModels/project_view_model.dart';
|
||||||
|
import 'package:driverapp/root_page.dart';
|
||||||
|
import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class SplashScreenPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_SplashScreenPageState createState() => _SplashScreenPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SplashScreenPageState extends State<SplashScreenPage> {
|
||||||
|
startTime() async {
|
||||||
|
var _duration = new Duration(seconds: 1);
|
||||||
|
return new Timer(_duration, navigationPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
startTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
ProjectViewModel projectViewModel = Provider.of(context);
|
||||||
|
|
||||||
|
return AppScaffold(
|
||||||
|
isShowAppBar: false,
|
||||||
|
appBarColor: Color(0xff30B7B9),
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Center(
|
||||||
|
child: Column(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
FractionallySizedBox(
|
||||||
|
widthFactor: 0.80,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
SizedBox(
|
||||||
|
height: 200,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
child: Icon(
|
||||||
|
DriverApp.logo,
|
||||||
|
size: 110,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
right: projectViewModel.isArabic
|
||||||
|
? 0
|
||||||
|
: MediaQuery.of(context).size.width * 0.15,
|
||||||
|
left: !projectViewModel.isArabic
|
||||||
|
? 0
|
||||||
|
: MediaQuery.of(context).size.width * 0.15),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Text(
|
||||||
|
"Driver",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 70,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"Delivery",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 50,
|
||||||
|
letterSpacing: 1,
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"APP",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 53,
|
||||||
|
letterSpacing: 53,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w400),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 280,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: FractionallySizedBox(
|
||||||
|
widthFactor: 0.80,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
"Powered by Cloud Solutions",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 13, color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void navigationPage() {
|
||||||
|
Navigator.pushReplacement(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => RootPage(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue