You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
driver-app/lib/pages/dashboard/dashboard_screen.dart

396 lines
17 KiB
Dart

import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/viewModels/pending_orders_view_model.dart';
import 'package:flutter/material.dart';
import '../base/base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:driverapp/app-icons/driver_app_icons.dart';
import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:driverapp/pages/orders/pending_orders_page.dart';
class DashboardScreen extends StatefulWidget {
@override
_DashboardScreenState createState() => _DashboardScreenState();
}
class _DashboardScreenState extends State<DashboardScreen> {
@override
Widget build(BuildContext context) {
return BaseView<PendingOrdersViewModel>(
onModelReady: (model) => model.getPendingOrders(),
builder:
(BuildContext context, PendingOrdersViewModel model, Widget child) =>
Scaffold(
backgroundColor: Color(0xffF4F9FA),
body: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Have a great day ,',
style: TextStyle(fontSize: 12.5),
),
Padding(
padding: EdgeInsets.only(top: 4.5),
child: Text(
'Driver Name',
style: TextStyle(
fontWeight: FontWeight.w400, fontSize: 25.0),
),
),
],
),
],
),
),
Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
CircleAvatar(
radius: 25.5,
backgroundColor: Color(0xff30B7B9),
child: CircleAvatar(
backgroundColor: Color(0xff30B7B9),
maxRadius: 26.0,
child: Image.asset(
'assets/images/driver.png',
fit: BoxFit.contain,
),
),
),
],
),
),
],
),
Row(
children: <Widget>[
Column(
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: Container(
height: MediaQuery.of(context).size.height * 0.15,
width: MediaQuery.of(context).size.width * 0.43,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0),
gradient: LinearGradient(
colors: [Color(0xff17AFB8), Color(0xff49C1BC)]),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: EdgeInsets.all(12.0),
child: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text(
'You Have',
style: TextStyle(
color: Colors.white, fontSize: 10.0),
),
Text(
'5',
style: TextStyle(
color: Colors.white, fontSize: 25.0),
),
Text(
'Undelivered \n Packages',
style: TextStyle(
color: Colors.white, fontSize: 10.0),
)
],
),
),
Padding(
padding: EdgeInsets.all(4.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(right: 9.5),
child: Image.asset(
'assets/images/closed_box.png',
height:
MediaQuery.of(context).size.height *
0.09,
width:
MediaQuery.of(context).size.width *
0.20,
//fit: BoxFit.cover,
)),
],
),
)
],
),
),
)
],
),
Column(
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: Container(
height: MediaQuery.of(context).size.height * 0.15,
width: MediaQuery.of(context).size.width * 0.43,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0),
gradient: LinearGradient(
colors: [Color(0xff17AFB8), Color(0xff49C1BC)]),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: EdgeInsets.all(12.0),
child: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text(
'You Have',
style: TextStyle(
color: Colors.white, fontSize: 10.0),
),
Text(
'25',
style: TextStyle(
color: Colors.white, fontSize: 25.0),
),
Text(
'unWanted\n Packge',
style: TextStyle(
color: Colors.white, fontSize: 10.0),
)
],
),
),
Padding(
padding: EdgeInsets.only(right: 9.5),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(
'assets/images/open_box.png',
height: MediaQuery.of(context).size.height *
0.11,
width: MediaQuery.of(context).size.width *
0.24,
scale: 0.9,
fit: BoxFit.cover,
),
],
),
),
],
),
),
)
],
),
],
),
Padding(
padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 12.0),
child: Row(
children: <Widget>[
Expanded(
child: InkWell(
child: Container(
height: 140,
width: 350,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0),
gradient: LinearGradient(colors: [
Color(0xff48C0BC),
Color(0xff17AFB8)
])),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(
'assets/images/qr_code.png',
width:
MediaQuery.of(context).size.width * 0.25,
height:
MediaQuery.of(context).size.height * 0.14,
fit: BoxFit.fitHeight,
)
],
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'SCAN',
style: TextStyle(
fontSize: 35.0, color: Colors.white),
),
Padding(
padding: EdgeInsets.only(top: 6.0),
child: Text(
'To add package to que ',
style: TextStyle(
fontSize: 12.0,
color: Colors.white,
letterSpacing: 0.5,
wordSpacing: 5.5,
),
),
),
],
)
],
),
),
),
)
],
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0, vertical: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Column(
children: <Widget>[
Text(
'Nearest Drop-Offs',
style: TextStyle(
fontSize: 21.0,
fontWeight: FontWeight.w400,
),
),
],
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
child: Row(
children: <Widget>[
Text(
'See All',
style: TextStyle(fontSize: 14.5),
),
Icon(
Icons.arrow_forward_ios,
size: 15.0,
),
],
),
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OrdersListScreen()),
)),
],
),
],
),
),
Column(
children: <Widget>[
ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: //model.orders == null ? 0 : model.orders.length,
2,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: RoundedContainer(
height: SizeConfig.heightMultiplier * 10.5,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 22.0),
child: Image.asset(
'assets/images/location.png'),
)
],
),
if (model.orders.length != 0)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
model.orders[index].firstName +
' ' +
model.orders[index].lastName,
style: TextStyle(fontSize: 20.0),
),
Text(
model.orders[index].mobileNumber,
style: TextStyle(
color: Color(0xff30B7B9),
fontWeight: FontWeight.w600,
fontSize: 15.0),
),
Text(
'Olaya ST, Behind kfc next to king-\ndom tower 2nd floor n.o 247',
style: TextStyle(color: Colors.black45),
)
],
),
Padding(
padding: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
backgroundColor: Colors.black45,
radius: 30.0,
child: CircleAvatar(
backgroundColor: Colors.white,
maxRadius: 28.9,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'3 K.m \n away',
style: TextStyle(
color: Color(0xff30B7B9),
fontSize: 14.0),
),
),
),
)
],
),
)
],
),
),
);
})
],
)
],
),
),
);
}
}