Compare commits

...

1 Commits

Author SHA1 Message Date
hussam al-habibeh f7e464567a elham commit 6 years ago

@ -22,8 +22,7 @@
to determine the Window background behind the Flutter UI. --> to determine the Window background behind the Flutter UI. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.NormalTheme" android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" android:resource="@style/NormalTheme" />
/>
<!-- Displays an Android View that continues showing the launch screen <!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual screen fades out. A splash screen is useful to avoid any visual
@ -31,8 +30,7 @@
Flutter's first frame. --> Flutter's first frame. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable" android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" android:resource="@drawable/launch_background" />
/>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />

@ -1,12 +1 @@
<?xml version="1.0" encoding="utf-8"?> import 'package:driverapp/config/config.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_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 'pack
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

@ -1,18 +1 @@
<?xml version="1.0" encoding="utf-8"?> import 'package:barcode_scan/platform_wrapper.dart';import 'package:driverapp/config/config.dart';import 'package:driverapp/config/size_config.dart';import 'package:driverapp/core/enum/viewstate.dart';import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';import 'package:driverapp/core/viewModels/authentication_view_model.dart';import 'package:driverapp/core/viewModels/orders_view_model.dart';import 'package:driverapp/pages/delivery/information_page.dart';import 'package:driverapp/pages/orders/deliverd_orders_page.dart';import 'package:driverapp/pages/orders/pending_orders_page.dart';import 'package:driverapp/pages/setting/setting_page.dart';import 'package:driverapp/uitl/app_toast.dart';import 'package:driverapp/uitl/translations_delegate_base.dart';import 'package:driverapp/uitl/utils.dart';import 'package:driverapp/widgets/order/order_info_card.dart';import 'package:driverapp/widgets/others/app_scaffold_w
<resources>
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@android:color/white</item>
</style>
</resources>

@ -21,19 +21,34 @@ class DriverApp {
static const _kFontFam = 'DriverApp'; static const _kFontFam = 'DriverApp';
static const _kFontPkg = null; static const _kFontPkg = null;
static const IconData location_1 = IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData location_1 =
static const IconData logo = IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData closed_box = IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData logo =
static const IconData location = IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData open_box = IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData closed_box =
static const IconData phone_call = IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData qr = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData location =
static const IconData not_available = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData rejected_icon = IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData open_box =
static const IconData not_reachable_icon = IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData group_74 = IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData phone_call =
static const IconData message = IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData whatsapp = IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData qr =
static const IconData call = IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg); IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData deliverd_icon = IconData(0xe812, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData not_available =
IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData rejected_icon =
IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData not_reachable_icon =
IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData group_74 =
IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData message =
IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData whatsapp =
IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData call =
IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData deliverd_icon =
IconData(0xe812, fontFamily: _kFontFam, fontPackage: _kFontPkg);
} }

@ -1,4 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
/// End points /// End points
const BASE_URL = 'https://uat.hmgwebservices.com/Services'; const BASE_URL = 'https://uat.hmgwebservices.com/Services';
@ -23,3 +24,11 @@ const MAX_SMALL_SCREEN = 660;
class AppGlobal { class AppGlobal {
static BuildContext context; static BuildContext context;
} }
const LINEAR_GRADIENT = LinearGradient(
colors: [
Color(0xff45B7AE),
Color(0xff119FA9),
],
// stops: [0.0, 1.0],
);

@ -1,5 +1,3 @@
const TOKEN = 'token'; const TOKEN = 'token';
const APP_LANGUAGE = 'language'; const APP_LANGUAGE = 'language';
const USER_PROFILE = 'user-profile'; const USER_PROFILE = 'user-profile';

@ -135,7 +135,7 @@ class ItemsQuantitiesList {
String itemName; String itemName;
String itemNameN; String itemNameN;
int productID; int productID;
int quantity; var quantity;
ItemsQuantitiesList( ItemsQuantitiesList(
{this.itemName, this.itemNameN, this.productID, this.quantity}); {this.itemName, this.itemNameN, this.productID, this.quantity});

@ -1,21 +1,22 @@
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/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();
List<PendingOrdersRes> _nextOrdersList = List(); List<PendingOrdersRes> _nextOrdersList = List();
List<DeliverdOrderResModel> _deliverdOrderList = List(); List<DeliverdOrderModel> _deliverdOrderList = List();
List<PendingOrdersRes> get orders => _orders; List<PendingOrdersRes> get orders => _orders;
List<DeliverdOrderResModel> get deliverdOrderList => _deliverdOrderList;
List<DeliverdOrderModel> get deliverdOrderList => _deliverdOrderList;
List<PendingOrdersRes> get nextOrdersList => _nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _nextOrdersList;
bool isOrderInserted; bool isOrderInserted;
@ -127,7 +128,7 @@ class OrdersService extends BaseService {
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_deliverdOrderList.clear(); _deliverdOrderList.clear();
response['PatientER_Delivery_GetAllDeliverdOrderList'].forEach((order) { response['PatientER_Delivery_GetAllDeliverdOrderList'].forEach((order) {
_deliverdOrderList.add(DeliverdOrderResModel.fromJson(order)); _deliverdOrderList.add(DeliverdOrderModel.fromJson(order));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;

@ -81,6 +81,10 @@ class AuthenticationViewModel with ChangeNotifier {
} }
logout() async { logout() async {
isLoading = false;
isError = false;
isLogin = false;
await sharedPref.clear(); await sharedPref.clear();
notifyListeners();
} }
} }

@ -5,7 +5,7 @@ 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';
@ -14,7 +14,7 @@ class OrdersViewModel extends BaseViewModel {
List<PendingOrdersRes> get orders => _ordersService.orders; List<PendingOrdersRes> get orders => _ordersService.orders;
List<DeliverdOrderResModel> get deliverdOrders => List<DeliverdOrderModel> get deliverdOrders =>
_ordersService.deliverdOrderList; _ordersService.deliverdOrderList;
List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList; List<PendingOrdersRes> get nextOrdersList => _ordersService.nextOrdersList;

@ -3,6 +3,7 @@ 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/orders_service.dart'; import 'core/service/orders_service.dart';
import 'core/viewModels/authentication_view_model.dart';
import 'core/viewModels/hospital_view_model.dart'; import 'core/viewModels/hospital_view_model.dart';
import 'core/viewModels/orders_view_model.dart'; import 'core/viewModels/orders_view_model.dart';
@ -17,6 +18,6 @@ void setupLocator() {
/// View Model /// View Model
locator.registerFactory(() => HospitalViewModel()); locator.registerFactory(() => HospitalViewModel());
// locator.registerFactory(() => AuthenticationViewModel()); locator.registerFactory(() => AuthenticationViewModel());
locator.registerFactory(() => OrdersViewModel()); locator.registerFactory(() => OrdersViewModel());
} }

@ -62,12 +62,10 @@ class LoginPage extends StatelessWidget {
margin: EdgeInsets.only( margin: EdgeInsets.only(
right: projectViewModel.isArabic right: projectViewModel.isArabic
? 0 ? 0
: MediaQuery.of(context).size.width * : MediaQuery.of(context).size.width * 0.15,
0.15,
left: !projectViewModel.isArabic left: !projectViewModel.isArabic
? 0 ? 0
: MediaQuery.of(context).size.width * : MediaQuery.of(context).size.width * 0.15),
0.15),
), ),
], ],
), ),
@ -185,8 +183,7 @@ class LoginPage extends StatelessWidget {
return null; return null;
}, },
onSaved: (value) { onSaved: (value) {
loginRequest.userID = loginRequest.userID = int.parse(value.trim());
int.parse(value.trim());
}, },
), ),
), ),
@ -214,17 +211,18 @@ class LoginPage extends StatelessWidget {
SizedBox( SizedBox(
height: 25, height: 25,
), ),
Row( //ToDo when forget page functions ready
mainAxisAlignment: MainAxisAlignment.end, // Row(
children: <Widget>[ // mainAxisAlignment: MainAxisAlignment.end,
Text( // children: <Widget>[
TranslationBase.of(context).forgotPassword, // Text(
style: TextStyle( // TranslationBase.of(context).forgotPassword,
fontSize: 14, // style: TextStyle(
color: Theme.of(context).primaryColor), // fontSize: 14,
), // color: Theme.of(context).primaryColor),
], // ),
), // ],
// ),
], ],
), ),
), ),
@ -237,7 +235,6 @@ class LoginPage extends StatelessWidget {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
Container( Container(
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
height: MediaQuery.of(context).size.height * 0.22, height: MediaQuery.of(context).size.height * 0.22,
@ -263,5 +260,4 @@ class LoginPage extends StatelessWidget {
), ),
); );
} }
} }

@ -1,4 +1,5 @@
import 'package:barcode_scan/platform_wrapper.dart'; import 'package:barcode_scan/platform_wrapper.dart';
import 'package:driverapp/config/config.dart';
import 'package:driverapp/config/size_config.dart'; import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.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';
@ -7,14 +8,13 @@ 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/deliverd_orders_page.dart'; import 'package:driverapp/pages/orders/deliverd_orders_page.dart';
import 'package:driverapp/pages/orders/pending_orders_page.dart'; import 'package:driverapp/pages/orders/pending_orders_page.dart';
import 'package:driverapp/pages/setting/setting.dart'; import 'package:driverapp/pages/setting/setting_page.dart';
import 'package:driverapp/uitl/app_toast.dart'; import 'package:driverapp/uitl/app_toast.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/data_display/circle-container.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';
import 'package:driverapp/widgets/others/network_base_view.dart'; import 'package:driverapp/widgets/others/network_base_view.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';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
@ -102,14 +102,18 @@ class _DashboardScreenState extends State<DashboardScreen> {
child: Image.asset( child: Image.asset(
'assets/images/driver.png', 'assets/images/driver.png',
fit: BoxFit.contain, fit: BoxFit.contain,
),), ),
),
), ),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) => SettingPage(
SettingPage(driverName:_authenticationViewModel.user.userName, driverID:_authenticationViewModel.user.userID))); driverName: _authenticationViewModel
.user.userName,
driverID: _authenticationViewModel
.user.userID)));
}, },
), ),
], ],
@ -133,10 +137,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
width: MediaQuery.of(context).size.width * 0.44, width: MediaQuery.of(context).size.width * 0.44,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient(colors: [ gradient: LINEAR_GRADIENT,
Color(0xff17AFB8),
Color(0xff49C1BC)
]),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -243,10 +244,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient(colors: [ gradient: LINEAR_GRADIENT,
Color(0xff17AFB8),
Color(0xff49C1BC)
]),
), ),
child: InkWell( child: InkWell(
onTap: () => Navigator.push( onTap: () => Navigator.push(
@ -279,7 +277,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
), ),
Text( Text(
'5', '3',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: fontSize:
@ -288,7 +286,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
Text( Text(
TranslationBase.of(context) TranslationBase.of(context)
.undeliveredPackages, .deliveredPackages,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: MediaQuery.of(context) fontSize: MediaQuery.of(context)
@ -311,7 +309,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
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,
@ -360,30 +359,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
_scanQrAndGetPatient(context, model); _scanQrAndGetPatient(context, model);
}, },
child: Container( child: Container(
height: MediaQuery height: MediaQuery.of(context).orientation ==
.of(context)
.orientation ==
Orientation.portrait Orientation.portrait
? MediaQuery ? MediaQuery.of(context).size.height * 0.18
.of(context) : MediaQuery.of(context).size.height * 0.30,
.size width: MediaQuery.of(context).size.width * 0.50,
.height * 0.18
: MediaQuery
.of(context)
.size
.height * 0.30,
width: MediaQuery
.of(context)
.size
.width * 0.50,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0), borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient( gradient: LINEAR_GRADIENT,
colors: [
Hexcolor("#45B7AE"),
Hexcolor("#119FA9")
],
),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
@ -414,12 +397,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
Padding( Padding(
padding: EdgeInsets.only(top: 8.0), padding: EdgeInsets.only(top: 8.0),
child: Text( child: Text(
TranslationBase TranslationBase.of(context).scan,
.of(context)
.scan,
style: TextStyle( style: TextStyle(
fontSize: MediaQuery fontSize: MediaQuery.of(context)
.of(context)
.orientation == .orientation ==
Orientation.landscape Orientation.landscape
? SizeConfig.textMultiplier * 6.0 ? SizeConfig.textMultiplier * 6.0
@ -432,12 +412,10 @@ class _DashboardScreenState extends State<DashboardScreen> {
Padding( Padding(
padding: EdgeInsets.only(top: 0.0), padding: EdgeInsets.only(top: 0.0),
child: Text( child: Text(
TranslationBase TranslationBase.of(context)
.of(context)
.toAddPackageToQue, .toAddPackageToQue,
style: TextStyle( style: TextStyle(
fontSize: MediaQuery fontSize: MediaQuery.of(context)
.of(context)
.orientation == .orientation ==
Orientation.landscape Orientation.landscape
? SizeConfig.textMultiplier * 3.0 ? SizeConfig.textMultiplier * 3.0
@ -465,8 +443,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
children: <Widget>[ children: <Widget>[
Column( Column(
children: <Widget>[ children: <Widget>[
Text( Text(TranslationBase.of(context).nearestDropOffs,
TranslationBase.of(context).nearestDropOffs,
style: TextStyle( style: TextStyle(
fontSize: 18.0, fontSize: 18.0,
color: Hexcolor("#343333"), color: Hexcolor("#343333"),
@ -492,8 +469,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
], ],
), ),
onTap: () => onTap: () => Navigator.push(
Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => OrdersListScreen()), builder: (context) => OrdersListScreen()),
@ -514,142 +490,23 @@ class _DashboardScreenState extends State<DashboardScreen> {
? 0 ? 0
: model.orders.length < 3 ? model.orders.length : 3, : model.orders.length < 3 ? model.orders.length : 3,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
model.orders.length == 0
? Text(
"There's No Orders To Deliver",
style: TextStyle(color: Colors.red),
)
: Text("");
return Padding( return Padding(
padding: EdgeInsets.symmetric(horizontal: 0.2), padding: EdgeInsets.symmetric(horizontal: 0.2),
child: InkWell( child: OrderInfoCard(
child: Container( order: model.orders[index],
child: RoundedContainer(
showShadow: true,
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.orders[index].firstName +
' ' +
model.orders[index].lastName,
style: TextStyle(
fontSize: 18.0,
color: Hexcolor("#343333"),
fontWeight: FontWeight.bold),
),
),
Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0,
),
),
Expanded(
child: Text(
model.orders[index].orderID
.toString(),
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.w400,
letterSpacing: 8.0),
),
),
],
),
),
Padding(
padding: EdgeInsets.all(8.0),
child: CircleContainer(
borderWidth: 1.5,
child: Text(
model.orders[index].distanceInKilometers
.toString() +
'\nK.m\naway',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
),
),
],
),
),
),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) => InformationPage(
InformationPage(model.orders[index]))); model.orders[index])));
}, }),
),
); );
}, },
), ),

@ -1,3 +1,4 @@
import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.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';
@ -23,13 +24,14 @@ class DeliveryConfirmedPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<OrdersViewModel>( return BaseView<OrdersViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isAppBarGradient: true,
isShowAppBar: true, isShowAppBar: true,
appBarColor: Theme.of(context).primaryColor, appBarColor: Theme.of(context).primaryColor,
arrowColor: Colors.white, arrowColor: Colors.white,
titleColor: Colors.white, titleColor: Colors.white,
body: SafeArea( body: SafeArea(
child: Container( child: Container(
color: Theme.of(context).primaryColor, decoration: BoxDecoration(gradient: LINEAR_GRADIENT),
child: ListView( child: ListView(
children: <Widget>[ children: <Widget>[
Stack( Stack(
@ -41,9 +43,12 @@ class DeliveryConfirmedPage extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Container( Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width * 0.7, height: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.width * 0.7
: MediaQuery.of(context).size.width * 0.5,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: MediaQuery.of(context).size.width * 0.12, top: MediaQuery.of(context).size.width * 0.14,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white10, color: Colors.white10,
@ -61,7 +66,7 @@ class DeliveryConfirmedPage extends StatelessWidget {
0.03, 0.03,
), ),
Text( Text(
TranslationBase.of(context).deliveryInfo, 'Delivery Confirmed',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 20, fontSize: 20,
@ -88,15 +93,21 @@ class DeliveryConfirmedPage extends StatelessWidget {
), ),
], ],
), ),
// Container(
// width: MediaQuery.of(context).size.width,
// height: MediaQuery.of(context).size.width,
// ),
Container( Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width, height: MediaQuery.of(context).orientation ==
), Orientation.landscape
Container( ? MediaQuery.of(context).size.width * 0.6
width: MediaQuery.of(context).size.width, : MediaQuery.of(context).size.width * 1.0,
height: MediaQuery.of(context).size.width * 1.0,
margin: EdgeInsets.only( margin: EdgeInsets.only(
top: MediaQuery.of(context).size.width * 0.75, top: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.width * 0.70
: MediaQuery.of(context).size.width * 0.60,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
@ -105,25 +116,33 @@ class DeliveryConfirmedPage extends StatelessWidget {
topRight: Radius.circular(80)), topRight: Radius.circular(80)),
), ),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MediaQuery.of(context).orientation ==
Orientation.landscape
? MainAxisAlignment.center
: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
bottom: MediaQuery.of(context).size.width * 0.09, bottom: MediaQuery.of(context).size.width * 0.00,
), ),
child: Padding(
padding: MediaQuery.of(context).orientation ==
Orientation.landscape
? EdgeInsets.only(top: 60.0)
: EdgeInsets.only(top: 30.0),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
FlatButton.icon( FlatButton.icon(
padding: EdgeInsets.all(8), padding: EdgeInsets.all(14.0),
color: Colors.orangeAccent, color: Colors.orangeAccent,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius: BorderRadius.circular(10.0),
new BorderRadius.circular(10.0),
), ),
label: Text( label: Text(
TranslationBase.of(context).addNoteBtn, TranslationBase.of(context).addNoteBtn,
style: TextStyle(color: Colors.white), style: TextStyle(
color: Colors.white, fontSize: 20.0),
), ),
icon: Icon( icon: Icon(
Icons.mode_edit, Icons.mode_edit,
@ -133,28 +152,36 @@ class DeliveryConfirmedPage extends StatelessWidget {
), ),
SizedBox( SizedBox(
height: MediaQuery.of(context).size.width * height: MediaQuery.of(context).size.width *
0.02, //20, 0.00, //20,
), ),
Container( Padding(
padding: const EdgeInsets.only(top: 30.0),
child: Container(
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context) label: TranslationBase.of(context)
.nextDelivery, .nextDelivery,
loading: model.state == ViewState.BusyLocal, loading:
model.state == ViewState.BusyLocal,
onTap: () { onTap: () {
getNextOrder(context, model); getNextOrder(context, model);
}, },
), ),
), ),
),
], ],
), ),
), ),
),
], ],
), ),
), ),
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
top: MediaQuery.of(context).size.width * 0.6, top: MediaQuery.of(context).orientation ==
Orientation.portrait
? MediaQuery.of(context).size.width * 0.6
: MediaQuery.of(context).size.width * 0.4,
), ),
child: CustomerBriefCard( child: CustomerBriefCard(
itemId: item.orderID, itemId: item.orderID,

File diff suppressed because one or more lines are too long

@ -8,10 +8,8 @@ class ReplayPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
body: Center( body: Center(
child: InkWell(onTap: () {}, child: InkWell(onTap: () {}, child: Texts('Replay Page')),
child: Texts('Replay Page')),
), ),
); );
} }
} }

@ -1,11 +1,9 @@
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/widgets/order/order_info_card.dart';
import 'package:driverapp/widgets/data_display/circle-container.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.dart'; import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
import 'package:driverapp/widgets/others/rounded_container.dart'; import 'package:driverapp/widgets/others/network_base_view.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
@ -29,7 +27,13 @@ class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
Expanded( model.deliverdOrders.length == 0
? Text("There's No Orders To Deliver",
style: TextStyle(color: Colors.red))
: Text(""),
NetworkBaseView(
baseViewModel: model,
child: Expanded(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
@ -37,117 +41,20 @@ class _DeliverdOrdersPageState extends State<DeliverdOrdersPage> {
? 0 ? 0
: model.deliverdOrders.length, : model.deliverdOrders.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
model.deliverdOrders.length == 0
? Text("There's No Orders To Deliver",
style: TextStyle(color: Colors.red))
: Text("");
return Padding( return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.2), padding: EdgeInsets.symmetric(horizontal: 12.2),
child: InkWell( child: OrderInfoCard(
child: RoundedContainer( order: model.deliverdOrders[index],
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])));
// },
), ),
); );
}, },
), ),
), ),
),
], ],
), ),
), ),

@ -1,12 +1,10 @@
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';
import 'package:driverapp/widgets/data_display/circle-container.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';
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';
import 'package:hexcolor/hexcolor.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
@ -30,6 +28,9 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
SizedBox( SizedBox(
height: 20, height: 20,
), ),
model.orders.length == 0
? Text("There's No Orders To Deliver")
: Text(""),
Expanded( Expanded(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
@ -38,101 +39,8 @@ class _OrdersListScreenState extends State<OrdersListScreen> {
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: InkWell( child: OrderInfoCard(
child: RoundedContainer( order: model.orders[index],
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.orders[index].firstName +
' ' +
model.orders[index].lastName,
style: TextStyle(
fontSize: 18.0,
color: Hexcolor("#343333"),
fontWeight: FontWeight.bold),
),
),
Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0,
),
),
Expanded(
child: Text(
model.orders[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.orders[index].distanceInKilometers
.toString() +
'\nK.m\naway',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
),
),
],
),
),
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,

@ -1,11 +1,12 @@
import 'package:driverapp/core/viewModels/authentication_view_model.dart'; import 'package:driverapp/core/viewModels/authentication_view_model.dart';
import 'package:driverapp/pages/authentication/login_page.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart'; import 'package:driverapp/uitl/translations_delegate_base.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.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:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../root_page.dart';
class SettingPage extends StatelessWidget { class SettingPage extends StatelessWidget {
final String driverName; //_authenticationViewModel.user.userName final String driverName; //_authenticationViewModel.user.userName
final int driverID; final int driverID;
@ -46,31 +47,33 @@ class SettingPage extends StatelessWidget {
), ),
), ),
), ),
SizedBox(height: MediaQuery.of(context).size.width *0.05,), SizedBox(
height: MediaQuery.of(context).size.width * 0.05,
),
Container( Container(
child: Text( child: Text(
driverName, driverName,
style: TextStyle( style: TextStyle(
fontSize: 40, fontSize: 40,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Colors.white color: Colors.white),
), ),
), ),
SizedBox(
height: MediaQuery.of(context).size.width * 0.05,
), ),
SizedBox(height: MediaQuery.of(context).size.width *0.05,),
Container( Container(
child: Text( child: Text(
'ID: ${driverID.toString()}', 'ID: ${driverID.toString()}',
style: TextStyle( style: TextStyle(fontSize: 20, color: Colors.white),
fontSize: 20,
color: Colors.white
),
), ),
), ),
], ],
), ),
), ),
SizedBox(height: MediaQuery.of(context).size.width *0.1,), SizedBox(
height: MediaQuery.of(context).size.width * 0.1,
),
Container( Container(
margin: EdgeInsets.only(left: 35), margin: EdgeInsets.only(left: 35),
child: Column( child: Column(
@ -79,11 +82,9 @@ class SettingPage extends StatelessWidget {
InkWell( InkWell(
onTap: () async { onTap: () async {
await _authenticationViewModel.logout(); await _authenticationViewModel.logout();
Navigator.push( Navigator.pushReplacement(
context, context,
MaterialPageRoute( MaterialPageRoute(builder: (context) => RootPage()),
builder: (context) => LoginPage()
),
); );
}, },
child: Column( child: Column(
@ -98,14 +99,15 @@ class SettingPage extends StatelessWidget {
size: 40, size: 40,
color: Colors.white, color: Colors.white,
), ),
SizedBox(width: MediaQuery.of(context).size.width *0.05,), SizedBox(
width: MediaQuery.of(context).size.width * 0.05,
),
Text( Text(
TranslationBase.of(context).logout, TranslationBase.of(context).logout,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Colors.white, color: Colors.white,
fontSize: 18 fontSize: 18),
),
), ),
], ],
), ),
@ -114,7 +116,8 @@ class SettingPage extends StatelessWidget {
height: MediaQuery.of(context).size.width * 0.05, height: MediaQuery.of(context).size.width * 0.05,
child: Center( child: Center(
child: Container( child: Container(
margin: EdgeInsetsDirectional.only(start: 0, end: 30), margin:
EdgeInsetsDirectional.only(start: 0, end: 30),
height: 1.0, height: 1.0,
color: Colors.white, color: Colors.white,
), ),
@ -123,7 +126,9 @@ class SettingPage extends StatelessWidget {
], ],
), ),
), ),
SizedBox(height: MediaQuery.of(context).size.width*0.05,), SizedBox(
height: MediaQuery.of(context).size.width * 0.05,
),
InkWell( InkWell(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -145,8 +150,7 @@ class SettingPage extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Colors.white, color: Colors.white,
fontSize: 18 fontSize: 18),
),
), ),
], ],
), ),
@ -155,13 +159,16 @@ class SettingPage extends StatelessWidget {
height: 10.0, height: 10.0,
child: Center( child: Center(
child: Container( child: Container(
margin: EdgeInsetsDirectional.only(start: 0, end: 30), margin:
EdgeInsetsDirectional.only(start: 0, end: 30),
height: 1.0, height: 1.0,
color: Colors.white, color: Colors.white,
), ),
), ),
), ),
SizedBox(height: MediaQuery.of(context).size.width*0.05,), SizedBox(
height: MediaQuery.of(context).size.width * 0.05,
),
], ],
), ),
), ),

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_flexible_toast/flutter_flexible_toast.dart'; import 'package:flutter_flexible_toast/flutter_flexible_toast.dart';
class AppToast { class AppToast {
/// show long toast message /// show long toast message
/// [message] to show for user /// [message] to show for user
/// [timeInSeconds] how many second the toast will appear to the user /// [timeInSeconds] how many second the toast will appear to the user

@ -1,5 +1,4 @@
class DateUtil { class DateUtil {
/// convert String To Date function /// convert String To Date function
/// [date] String we want to convert /// [date] String we want to convert
static DateTime convertStringToDate(String date) { static DateTime convertStringToDate(String date) {
@ -91,7 +90,6 @@ class DateUtil {
} }
} }
/// get data formatted like Apr 26,2020 /// get data formatted like Apr 26,2020
/// [dateTime] convert DateTime to data formatted /// [dateTime] convert DateTime to data formatted
static String getMonthDayYearDateFormatted(DateTime dateTime) { static String getMonthDayYearDateFormatted(DateTime dateTime) {
@ -105,7 +103,6 @@ class DateUtil {
return ""; return "";
} }
/// get data formatted like 26/4/2020 /// get data formatted like 26/4/2020
/// [dateTime] convert DateTime to data formatted /// [dateTime] convert DateTime to data formatted
static String getDayMonthYearDateFormatted(DateTime dateTime) { static String getDayMonthYearDateFormatted(DateTime dateTime) {
@ -120,7 +117,6 @@ class DateUtil {
return ""; return "";
} }
static String convertStringToHours(String date) { static String convertStringToHours(String date) {
DateTime stringDate = convertStringToDate(date); DateTime stringDate = convertStringToDate(date);
DateTime dateTime = DateTime.parse(stringDate.toString()); DateTime dateTime = DateTime.parse(stringDate.toString());
@ -128,5 +124,4 @@ class DateUtil {
hours = hours.substring(10, 16); hours = hours.substring(10, 16);
return hours; return hours;
} }
} }

@ -39,13 +39,18 @@ class TranslationBase {
String get logout => localizedValues['logout'][locale.languageCode]; String get logout => localizedValues['logout'][locale.languageCode];
String get booking => localizedValues['booking'][locale.languageCode]; String get booking => localizedValues['booking'][locale.languageCode];
String get enterId => localizedValues['enterId'][locale.languageCode]; String get enterId => localizedValues['enterId'][locale.languageCode];
String get pleaseEnterYourID => String get pleaseEnterYourID =>
localizedValues['pleaseEnterYourID'][locale.languageCode]; localizedValues['pleaseEnterYourID'][locale.languageCode];
String get enterPassword => String get enterPassword =>
localizedValues['enterPassword'][locale.languageCode]; localizedValues['enterPassword'][locale.languageCode];
String get pleaseEnterPassword => String get pleaseEnterPassword =>
localizedValues['pleaseEnterPassword'][locale.languageCode]; localizedValues['pleaseEnterPassword'][locale.languageCode];
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];
@ -55,6 +60,7 @@ class TranslationBase {
String get forgotPassword => String get forgotPassword =>
localizedValues['forgotPassword'][locale.languageCode]; localizedValues['forgotPassword'][locale.languageCode];
String get login => localizedValues['login'][locale.languageCode]; String get login => localizedValues['login'][locale.languageCode];
String get haveGreatDay => String get haveGreatDay =>
@ -103,8 +109,10 @@ class TranslationBase {
String get confirmationSent => String get confirmationSent =>
localizedValues['confirmationSent'][locale.languageCode]; localizedValues['confirmationSent'][locale.languageCode];
String get yourDeliveryQue => String get yourDeliveryQue =>
localizedValues['yourDeliveryQue'][locale.languageCode]; localizedValues['yourDeliveryQue'][locale.languageCode];
String get toAddPackageToQue => String get toAddPackageToQue =>
localizedValues['toAddPackageToQue'][locale.languageCode]; localizedValues['toAddPackageToQue'][locale.languageCode];

@ -49,4 +49,16 @@ class Utils {
LocationData currentLocation = await location.getLocation(); LocationData currentLocation = await location.getLocation();
return currentLocation; return currentLocation;
} }
static formatStringToPascalCase(String name) {
List<String> names = name.split(" ");
List<String> formattedNamesList = [];
names.forEach((name) {
name = name.toLowerCase();
name = name != "" ? name[0].toUpperCase() + name.substring(1) : "";
formattedNamesList.add(name);
});
return formattedNamesList.join(' ');
}
} }

@ -10,13 +10,11 @@ enum MINI_BUTTON { Secondary, Primary }
/// [variant] determine the color button /// [variant] determine the color button
class MiniButton extends StatefulWidget { class MiniButton extends StatefulWidget {
MiniButton( MiniButton(
{ {this.label: "",
this.label: "",
this.icon, this.icon,
this.onTap, this.onTap,
this.variant: MINI_BUTTON.Secondary}); this.variant: MINI_BUTTON.Secondary});
final String label; final String label;
final IconData icon; final IconData icon;
final VoidCallback onTap; final VoidCallback onTap;

@ -1,3 +1,4 @@
import 'package:driverapp/config/config.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
@ -169,15 +170,10 @@ class _SecondaryButtonState extends State<SecondaryButton>
left: 0, left: 0,
bottom: 0, bottom: 0,
child: Container( child: Container(
width: MediaQuery width: MediaQuery.of(context).size.width,
.of(context)
.size
.width,
height: 100, height: 100,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme color: Theme.of(context).disabledColor,
.of(context)
.disabledColor,
), ),
), ),
), ),
@ -191,14 +187,8 @@ class _SecondaryButtonState extends State<SecondaryButton>
height: MediaQuery.of(context).size.width * 2.2, height: MediaQuery.of(context).size.width * 2.2,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
gradient: widget.color != null gradient:
? null widget.color != null ? null : LINEAR_GRADIENT,
: LinearGradient(
colors: [
Hexcolor("#45B7AE"),
Hexcolor("#119FA9")
],
),
color: widget.color != null color: widget.color != null
? widget.color ? widget.color
: Hexcolor("#000000"), : Hexcolor("#000000"),
@ -232,7 +222,8 @@ class _SecondaryButtonState extends State<SecondaryButton>
width: 19.0, width: 19.0,
child: CircularProgressIndicator( child: CircularProgressIndicator(
backgroundColor: Colors.white, backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>( valueColor:
AlwaysStoppedAnimation<Color>(
Colors.grey[300], Colors.grey[300],
), ),
), ),

@ -6,7 +6,7 @@ class CircleContainer extends StatelessWidget {
{this.child, {this.child,
this.color = Colors.white, this.color = Colors.white,
this.borderColor, this.borderColor,
this.borderWidth = 1.5, this.borderWidth = 2,
this.onTap}); this.onTap});
final Widget child; final Widget child;

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
/// Flexible container widget /// Flexible container widget
/// [widthFactor] If non-null, the fraction of the incoming width given to the child. /// [widthFactor] If non-null, the fraction of the incoming width given to the child.
/// If non-null, the child is given a tight width constraint that is the max /// If non-null, the child is given a tight width constraint that is the max

@ -208,8 +208,7 @@ class _TextsState extends State<Texts> {
) )
: TextStyle( : TextStyle(
fontStyle: widget.italic ? FontStyle.italic : null, fontStyle: widget.italic ? FontStyle.italic : null,
color: color: widget.color ?? Colors.black,
widget.color ?? Colors.black,
fontSize: widget.fontSize ?? _getFontSize(), fontSize: widget.fontSize ?? _getFontSize(),
letterSpacing: letterSpacing:
widget.variant == "overline" ? 1.5 : null, widget.variant == "overline" ? 1.5 : null,

@ -1,6 +1,8 @@
import 'package:driverapp/widgets/data_display/circle-container.dart';
import 'package:flutter/material.dart';
import 'package:driverapp/config/size_config.dart'; import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/delivery/distance_in_kilometers.dart';
import 'package:flutter/material.dart';
import '../../uitl/date_uitl.dart'; import '../../uitl/date_uitl.dart';
import '../../uitl/translations_delegate_base.dart'; import '../../uitl/translations_delegate_base.dart';
@ -34,6 +36,8 @@ class CustomerBriefCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Center( return Center(
child: Padding(
padding: EdgeInsets.only(bottom: 0.0),
child: Container( child: Container(
width: MediaQuery.of(context).orientation == Orientation.landscape width: MediaQuery.of(context).orientation == Orientation.landscape
? SizeConfig.widthMultiplier * 125.0 ? SizeConfig.widthMultiplier * 125.0
@ -67,22 +71,16 @@ class CustomerBriefCard extends StatelessWidget {
child: Text( child: Text(
'ID: ${itemId}', 'ID: ${itemId}',
style: TextStyle( style: TextStyle(
color: Color(0xFFADACAD), color: Color(0xff636363),
fontWeight: FontWeight.w800, fontWeight: FontWeight.w500,
fontSize: 17.5), fontSize: 17.5),
), ),
), ),
Expanded( Expanded(
child: Padding( child: Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: CircleContainer( child: DistanceInKilometers(
child: Text( distanceInKilometers: 0.0,
'0 K.m\naway',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
), ),
), ),
), ),
@ -92,15 +90,21 @@ class CustomerBriefCard extends StatelessWidget {
height: MediaQuery.of(context).size.width * 0.02, height: MediaQuery.of(context).size.width * 0.02,
), ),
Text( Text(
'${customerFirstName} ${customerLastName}', Utils.formatStringToPascalCase(
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500), '${customerFirstName} ${customerLastName}'),
style: TextStyle(
color: Color(0xff343333),
fontWeight: FontWeight.bold,
fontSize: 20.0,
),
), ),
SizedBox( SizedBox(
height: MediaQuery.of(context).size.width * 0.019, height: MediaQuery.of(context).size.width * 0.019,
), ),
Text( Text(
mobileNo, mobileNo,
style: TextStyle(color: Color(0xFF50BDC5)), style: TextStyle(
color: Color(0xff14A0A9), fontWeight: FontWeight.w400),
), ),
SizedBox( SizedBox(
height: MediaQuery.of(context).size.width * 0.005, height: MediaQuery.of(context).size.width * 0.005,
@ -175,6 +179,7 @@ class CustomerBriefCard extends StatelessWidget {
), ),
), ),
), ),
),
); );
} }
} }

@ -8,6 +8,7 @@ class DeliveryInfoButton extends StatelessWidget {
DeliveryInfoButton( DeliveryInfoButton(
{this.btnColor, this.btnIcon, this.btnFunction, this.btnName}); {this.btnColor, this.btnIcon, this.btnFunction, this.btnName});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
print(btnColor); print(btnColor);

@ -0,0 +1,44 @@
import 'package:driverapp/widgets/data_display/circle-container.dart';
import 'package:flutter/material.dart';
class DistanceInKilometers extends StatelessWidget {
const DistanceInKilometers({
@required this.distanceInKilometers,
Key key,
}) : super(key: key);
final dynamic distanceInKilometers;
@override
Widget build(BuildContext context) {
return CircleContainer(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
distanceInKilometers.toString(),
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
Text(
'K.m',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
Text(
'away',
style: TextStyle(
color: Color(0xff42B6AD),
fontWeight: FontWeight.w800,
fontStyle: FontStyle.normal),
),
],
),
);
}
}

@ -6,8 +6,6 @@ import 'package:flutter/material.dart';
import '../../config/size_config.dart'; import '../../config/size_config.dart';
import 'drawer_item_widget.dart'; import 'drawer_item_widget.dart';
class AppDrawer extends StatefulWidget { class AppDrawer extends StatefulWidget {
@override @override
_AppDrawerState createState() => _AppDrawerState(); _AppDrawerState createState() => _AppDrawerState();

@ -0,0 +1,100 @@
import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/delivery/distance_in_kilometers.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class OrderInfoCard extends StatelessWidget {
const OrderInfoCard({Key key, this.order, this.onTap}) : super(key: key);
final dynamic order;
final Function onTap;
@override
Widget build(BuildContext context) {
return InkWell(
child: Container(
child: RoundedContainer(
showShadow: true,
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,
),
)
],
),
),
Expanded(
flex: 5,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 20.0),
child: Text(
Utils.formatStringToPascalCase(
order.firstName + ' ' + order.lastName),
style: TextStyle(
fontSize: 18.0,
color: Hexcolor("#343333"),
fontWeight: FontWeight.bold),
),
),
Text(
order.mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0,
),
),
Expanded(
child: Text(
order.orderID.toString(),
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.w400,
letterSpacing: 8.0),
),
),
],
),
),
Padding(
padding: EdgeInsets.all(8.0),
child: DistanceInKilometers(
distanceInKilometers: order.distanceInKilometers,
),
),
],
),
),
),
onTap: () {
onTap();
},
);
}
}

@ -1,7 +1,9 @@
import 'package:driverapp/config/config.dart'; import 'package:driverapp/config/config.dart';
import 'package:driverapp/core/viewModels/base_view_model.dart'; import 'package:driverapp/core/viewModels/base_view_model.dart';
import 'package:driverapp/uitl/utils.dart';
import 'package:driverapp/widgets/progress_indicator/app_loader_widget.dart'; import 'package:driverapp/widgets/progress_indicator/app_loader_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gradient_app_bar/gradient_app_bar.dart';
import 'arrow_back.dart'; import 'arrow_back.dart';
import 'network_base_view.dart'; import 'network_base_view.dart';
@ -16,6 +18,7 @@ class AppScaffold extends StatelessWidget {
final Color titleColor; final Color titleColor;
final Color arrowColor; final Color arrowColor;
final Color appBarColor; final Color appBarColor;
final bool isAppBarGradient;
AppScaffold( AppScaffold(
{@required this.body, {@required this.body,
@ -27,18 +30,18 @@ class AppScaffold extends StatelessWidget {
this.titleColor, this.titleColor,
this.arrowColor, this.arrowColor,
this.appBarColor, this.appBarColor,
}); this.isAppBarGradient = false});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.context = context; AppGlobal.context = context;
return SafeArea( return SafeArea(
// top: false, top: false,
// bottom: false, bottom: false,
child: Scaffold( child: Scaffold(
backgroundColor: backgroundColor:
appBarColor ?? Theme.of(context).scaffoldBackgroundColor, appBarColor ?? Theme.of(context).scaffoldBackgroundColor,
appBar: isShowAppBar appBar: isShowAppBar && !isAppBarGradient
? AppBar( ? AppBar(
elevation: 0, elevation: 0,
backgroundColor: Theme.of(context).appBarTheme.color, backgroundColor: Theme.of(context).appBarTheme.color,
@ -47,10 +50,12 @@ class AppScaffold extends StatelessWidget {
color: titleColor ?? Colors.white, color: titleColor ?? Colors.white,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
title: Text(appBarTitle.toUpperCase()), title: Text(Utils.formatStringToPascalCase(appBarTitle)),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return ArrowBack(arrowColor: arrowColor,); return ArrowBack(
arrowColor: arrowColor,
);
}, },
), ),
centerTitle: true, centerTitle: true,
@ -64,13 +69,29 @@ class AppScaffold extends StatelessWidget {
// ), // ),
// ], // ],
) )
: isShowAppBar && isAppBarGradient
? GradientAppBar(
gradient: LINEAR_GRADIENT,
title: Text(
Utils.formatStringToPascalCase(appBarTitle),
style: TextStyle(color: Colors.white),
),
centerTitle: true,
leading: Builder(
builder: (BuildContext context) {
return ArrowBack(
arrowColor: arrowColor,
);
},
))
: null, : null,
body: baseViewModel != null body: baseViewModel != null
? NetworkBaseView( ? NetworkBaseView(
child: buildBodyWidget(), child: buildBodyWidget(),
baseViewModel: baseViewModel, baseViewModel: baseViewModel,
) )
: buildBodyWidget(), bottomSheet: bottomSheet, : buildBodyWidget(),
bottomSheet: bottomSheet,
), ),
); );
} }

@ -2,12 +2,9 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class CloseBack extends StatelessWidget { class CloseBack extends StatelessWidget {
final Function onTap; final Function onTap;
CloseBack({Key key, CloseBack({Key key, this.onTap}) : super(key: key);
this.onTap
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -41,7 +41,6 @@ class RoundedContainer extends StatefulWidget {
_RoundedContainerState createState() => _RoundedContainerState(); _RoundedContainerState createState() => _RoundedContainerState();
} }
class _RoundedContainerState extends State<RoundedContainer> { class _RoundedContainerState extends State<RoundedContainer> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -49,14 +48,12 @@ class _RoundedContainerState extends State<RoundedContainer> {
width: widget.width, width: widget.width,
height: widget.height, height: widget.height,
margin: EdgeInsets.all(widget.margin), margin: EdgeInsets.all(widget.margin),
decoration: decoration: BoxDecoration(
BoxDecoration( color: Theme.of(context).primaryColor,
color: Theme border: widget.showBorder == true
.of(context) ? Border.all(
.primaryColor, color: widget.borderColor, width: widget.borderWidth)
: null,
border: widget.showBorder == true ? Border.all(
color: widget.borderColor, width: widget.borderWidth) : null,
borderRadius: widget.customCornerRaduis borderRadius: widget.customCornerRaduis
? BorderRadius.only( ? BorderRadius.only(
topLeft: Radius.circular(widget.topLeft), topLeft: Radius.circular(widget.topLeft),
@ -64,16 +61,16 @@ class _RoundedContainerState extends State<RoundedContainer> {
bottomRight: Radius.circular(widget.bottomRight), bottomRight: Radius.circular(widget.bottomRight),
bottomLeft: Radius.circular(widget.bottomLeft)) bottomLeft: Radius.circular(widget.bottomLeft))
: BorderRadius.circular(widget.raduis), : BorderRadius.circular(widget.raduis),
boxShadow: widget.showShadow
boxShadow: widget.showShadow ? [ ? [
BoxShadow( BoxShadow(
color: Hexcolor("#DBE5E6"), color: Hexcolor("#DBE5E6"),
spreadRadius: 15, spreadRadius: 15,
blurRadius: 15, blurRadius: 15,
offset: Offset(0, 7), // changes position of shadow offset: Offset(0, 7), // changes position of shadow
), ),
] : []) ]
, : []),
child: Card( child: Card(
margin: EdgeInsets.all(0), margin: EdgeInsets.all(0),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
/// [page] /// [page]
class FadePage extends PageRouteBuilder { class FadePage extends PageRouteBuilder {
final Widget page; final Widget page;
FadePage({this.page}) FadePage({this.page})
: super( : super(
opaque: false, opaque: false,
@ -23,10 +24,6 @@ class FadePage extends PageRouteBuilder {
Animation<double> secondaryAnimation, Animation<double> secondaryAnimation,
Widget child, Widget child,
) { ) {
return FadeTransition( return FadeTransition(opacity: animation, child: child);
opacity: animation, });
child: child
);
}
);
} }

@ -72,6 +72,8 @@ dependencies:
# location # location
location: ^3.0.2 location: ^3.0.2
#gradient
gradient_app_bar: ^0.1.3

@ -5,11 +5,10 @@
// gestures. You can also use WidgetTester to find child widgets in the widget // gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct. // tree, read text, and verify that the values of widget properties are correct.
import 'package:driverapp/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:driverapp/main.dart';
void main() { void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async { testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame. // Build our app and trigger a frame.

Loading…
Cancel
Save