diff --git a/lib/helpers/widgets/custom_app_bar.dart b/lib/helpers/widgets/custom_app_bar.dart index b1fc7f7..6d3159f 100644 --- a/lib/helpers/widgets/custom_app_bar.dart +++ b/lib/helpers/widgets/custom_app_bar.dart @@ -6,11 +6,13 @@ import 'package:on_field_work/helpers/widgets/my_text.dart'; class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { final String title; + final String? projectName; final VoidCallback? onBackPressed; const CustomAppBar({ super.key, required this.title, + this.projectName, this.onBackPressed, }); @@ -51,21 +53,26 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { MySpacing.height(2), - // PROJECT NAME ROW (copied exactly) + // PROJECT NAME ROW GetBuilder( builder: (projectController) { - final projectName = + // NEW LOGIC — simple and safe + final displayProjectName = + projectName ?? projectController.selectedProject?.name ?? - 'Select Project'; + 'Select Project'; return Row( children: [ - const Icon(Icons.work_outline, - size: 14, color: Colors.grey), + const Icon( + Icons.work_outline, + size: 14, + color: Colors.grey, + ), MySpacing.width(4), Expanded( child: MyText.bodySmall( - projectName, + displayProjectName, fontWeight: 600, overflow: TextOverflow.ellipsis, color: Colors.grey[700], diff --git a/lib/view/service_project/jobs_tab.dart b/lib/view/service_project/jobs_tab.dart index cbc14b6..096db50 100644 --- a/lib/view/service_project/jobs_tab.dart +++ b/lib/view/service_project/jobs_tab.dart @@ -13,8 +13,9 @@ import 'package:on_field_work/helpers/utils/permission_constants.dart'; class JobsTab extends StatefulWidget { final ScrollController scrollController; + final String projectName; - const JobsTab({super.key, required this.scrollController}); + const JobsTab({super.key, required this.scrollController, required this.projectName}); @override _JobsTabState createState() => _JobsTabState(); @@ -165,11 +166,11 @@ class _JobsTabState extends State { children: [ AbsorbPointer( absorbing: controller.showArchivedJobs - .value, // Disable interactions if archived + .value, child: InkWell( onTap: () { if (!controller.showArchivedJobs.value) { - Get.to(() => JobDetailsScreen(jobId: job.id)); + Get.to(() => JobDetailsScreen(jobId: job.id , projectName : widget.projectName)); } }, child: Card( diff --git a/lib/view/service_project/service_project_details_screen.dart b/lib/view/service_project/service_project_details_screen.dart index e3e0073..ac528f7 100644 --- a/lib/view/service_project/service_project_details_screen.dart +++ b/lib/view/service_project/service_project_details_screen.dart @@ -15,8 +15,9 @@ import 'package:on_field_work/view/service_project/jobs_tab.dart'; class ServiceProjectDetailsScreen extends StatefulWidget { final String projectId; + final String? projectName; - const ServiceProjectDetailsScreen({super.key, required this.projectId}); + const ServiceProjectDetailsScreen({super.key, required this.projectId , this.projectName}); @override State createState() => @@ -415,6 +416,7 @@ class _ServiceProjectDetailsScreenState backgroundColor: const Color(0xFFF5F5F5), appBar: CustomAppBar( title: "Service Project Details", + projectName: widget.projectName, onBackPressed: () => Get.toNamed('/dashboard/service-projects'), ), body: SafeArea( @@ -455,7 +457,7 @@ class _ServiceProjectDetailsScreenState controller: _tabController, children: [ _buildProfileTab(), - JobsTab(scrollController: _jobScrollController), + JobsTab(scrollController: _jobScrollController, projectName: widget.projectName ?? '',), _buildTeamsTab(), ], ); diff --git a/lib/view/service_project/service_project_job_detail_screen.dart b/lib/view/service_project/service_project_job_detail_screen.dart index cd36d6b..977c323 100644 --- a/lib/view/service_project/service_project_job_detail_screen.dart +++ b/lib/view/service_project/service_project_job_detail_screen.dart @@ -21,7 +21,8 @@ import 'package:on_field_work/helpers/widgets/my_snackbar.dart'; class JobDetailsScreen extends StatefulWidget { final String jobId; - const JobDetailsScreen({super.key, required this.jobId}); + final String? projectName; + const JobDetailsScreen({super.key, required this.jobId, this.projectName}); @override State createState() => _JobDetailsScreenState(); @@ -752,11 +753,14 @@ class _JobDetailsScreenState extends State with UIMixin { @override Widget build(BuildContext context) { + final projectName = widget.projectName; return Scaffold( backgroundColor: const Color(0xFFF5F5F5), appBar: CustomAppBar( - title: "Service Project Job Details", - onBackPressed: () => Get.back()), + title: "Job Details Screen", + onBackPressed: () => Get.back(), + projectName: projectName, + ), floatingActionButton: Obx(() => FloatingActionButton.extended( onPressed: isEditing.value ? _editJob : () => isEditing.value = true, diff --git a/lib/view/service_project/service_project_screen.dart b/lib/view/service_project/service_project_screen.dart index f8ed3b8..bf07d58 100644 --- a/lib/view/service_project/service_project_screen.dart +++ b/lib/view/service_project/service_project_screen.dart @@ -50,7 +50,10 @@ class _ServiceProjectScreenState extends State borderRadius: BorderRadius.circular(14), onTap: () { // Navigate to ServiceProjectDetailsScreen - Get.to(() => ServiceProjectDetailsScreen(projectId: project.id)); + Get.to(() => ServiceProjectDetailsScreen( + projectId: project.id, + projectName: project.name, + )); }, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 14), @@ -196,6 +199,7 @@ class _ServiceProjectScreenState extends State backgroundColor: const Color(0xFFF5F5F5), appBar: CustomAppBar( title: "Service Projects", + projectName: 'All Service Projects', onBackPressed: () => Get.toNamed('/dashboard'), ), body: Column(