|
|
|
@ -660,25 +660,219 @@ class HomeScreen extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
class _HomeScreenState extends State<HomeScreen> {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Widget _quickActionButton(String label) {
|
|
|
|
|
return Container(
|
|
|
|
|
width: 70,
|
|
|
|
|
height: 70,
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.grey.shade100,
|
|
|
|
|
borderRadius: BorderRadius.circular(12),
|
|
|
|
|
),
|
|
|
|
|
child: Center(
|
|
|
|
|
child: Text(
|
|
|
|
|
label,
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
style: const TextStyle(fontSize: 13, fontWeight: FontWeight.w500),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return SingleChildScrollView(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.all(10),
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
return SingleChildScrollView(
|
|
|
|
|
padding: const EdgeInsets.all(16),
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
|
|
|
|
|
// Profile Completion
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
children: [
|
|
|
|
|
const Text(
|
|
|
|
|
"Complete your Profile",
|
|
|
|
|
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
|
|
|
|
),
|
|
|
|
|
Text(
|
|
|
|
|
"Hello! Welcome to ${AppSettings.buildingName}",
|
|
|
|
|
style: fontTextStyle(16,Color(0XFF2A2A2A),FontWeight.w600),
|
|
|
|
|
"Edit Profile",
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
color: Colors.blue,
|
|
|
|
|
fontSize: 14,
|
|
|
|
|
fontWeight: FontWeight.w500,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
SizedBox(height:MediaQuery.of(context).size.height * .03,),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 8),
|
|
|
|
|
LinearProgressIndicator(
|
|
|
|
|
value: 0.4,
|
|
|
|
|
backgroundColor: Colors.grey.shade200,
|
|
|
|
|
color: Colors.blue,
|
|
|
|
|
minHeight: 6,
|
|
|
|
|
borderRadius: BorderRadius.circular(10),
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
|
const Text(
|
|
|
|
|
"40% Complete\nComplete updating your profile in 5 minutes",
|
|
|
|
|
style: TextStyle(fontSize: 12, color: Colors.grey),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
const SizedBox(height: 20),
|
|
|
|
|
|
|
|
|
|
// Quick Actions Title
|
|
|
|
|
const Text(
|
|
|
|
|
"Quick Actions",
|
|
|
|
|
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 12),
|
|
|
|
|
|
|
|
|
|
// Set Rates Card
|
|
|
|
|
Container(
|
|
|
|
|
padding: const EdgeInsets.all(16),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.blue.shade600,
|
|
|
|
|
borderRadius: BorderRadius.circular(16),
|
|
|
|
|
),
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
Expanded(
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: const [
|
|
|
|
|
Text(
|
|
|
|
|
"Set Rates",
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
fontSize: 16,
|
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
SizedBox(height: 6),
|
|
|
|
|
Text(
|
|
|
|
|
"Set your water rates and delivery\nrates for the day in just a few taps",
|
|
|
|
|
style: TextStyle(fontSize: 12, color: Colors.white70),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
const Icon(Icons.currency_rupee, color: Colors.white, size: 28),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
const SizedBox(height: 16),
|
|
|
|
|
|
|
|
|
|
// Quick Action Buttons
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
children: [
|
|
|
|
|
_quickActionButton("Orders"),
|
|
|
|
|
_quickActionButton("Plans"),
|
|
|
|
|
_quickActionButton("Drivers"),
|
|
|
|
|
_quickActionButton("Fleet"),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
const SizedBox(height: 24),
|
|
|
|
|
|
|
|
|
|
// Ongoing Plans Title
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
children: const [
|
|
|
|
|
Text(
|
|
|
|
|
"Ongoing Plans",
|
|
|
|
|
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
|
|
|
|
),
|
|
|
|
|
Icon(Icons.arrow_forward_ios, size: 14, color: Colors.grey),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
const SizedBox(height: 12),
|
|
|
|
|
|
|
|
|
|
// Ongoing Plan Card
|
|
|
|
|
Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
borderRadius: BorderRadius.circular(16),
|
|
|
|
|
boxShadow: [
|
|
|
|
|
BoxShadow(
|
|
|
|
|
color: Colors.black12,
|
|
|
|
|
blurRadius: 4,
|
|
|
|
|
spreadRadius: 2,
|
|
|
|
|
offset: Offset(0, 2),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
ClipRRect(
|
|
|
|
|
borderRadius:
|
|
|
|
|
const BorderRadius.vertical(top: Radius.circular(16)),
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
"images/business.png", // replace with your asset
|
|
|
|
|
height: 30,
|
|
|
|
|
width: 30,
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Padding(
|
|
|
|
|
padding: const EdgeInsets.all(12),
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
// Status
|
|
|
|
|
Container(
|
|
|
|
|
padding: const EdgeInsets.symmetric(
|
|
|
|
|
horizontal: 8, vertical: 4),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.amber.shade200,
|
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
|
),
|
|
|
|
|
child: const Text(
|
|
|
|
|
"Pending",
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
fontSize: 12, fontWeight: FontWeight.w500),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
|
const Text(
|
|
|
|
|
"Rajpushpa Atria",
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
fontSize: 16, fontWeight: FontWeight.bold),
|
|
|
|
|
),
|
|
|
|
|
const Text(
|
|
|
|
|
"Kokapet",
|
|
|
|
|
style: TextStyle(color: Colors.grey, fontSize: 13),
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 6),
|
|
|
|
|
const Text(
|
|
|
|
|
"15,000L - Bore Water",
|
|
|
|
|
style: TextStyle(fontSize: 14),
|
|
|
|
|
),
|
|
|
|
|
const Text(
|
|
|
|
|
"12:00 PM, 23/07/2025",
|
|
|
|
|
style: TextStyle(fontSize: 13, color: Colors.grey),
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 10),
|
|
|
|
|
ElevatedButton(
|
|
|
|
|
onPressed: () {},
|
|
|
|
|
style: ElevatedButton.styleFrom(
|
|
|
|
|
backgroundColor: Colors.blue,
|
|
|
|
|
shape: RoundedRectangleBorder(
|
|
|
|
|
borderRadius: BorderRadius.circular(12)),
|
|
|
|
|
),
|
|
|
|
|
child: const Text("Assign"),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|