diff --git a/lib/common/dashboard.dart b/lib/common/dashboard.dart index 3af2255..a361ca8 100644 --- a/lib/common/dashboard.dart +++ b/lib/common/dashboard.dart @@ -660,25 +660,219 @@ class HomeScreen extends StatefulWidget { class _HomeScreenState extends State { - + 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"), + ) + ], + ), + ) + ], + ), ) + ], ), ); }