Service_Project_Branching #82

Merged
vaibhav.surve merged 20 commits from Service_Project_Branching into main 2025-11-24 06:32:58 +00:00
5 changed files with 33 additions and 15 deletions
Showing only changes of commit e9075dcdf5 - Show all commits

View File

@ -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<ProjectController>(
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],

View File

@ -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<JobsTab> {
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(

View File

@ -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<ServiceProjectDetailsScreen> 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(),
],
);

View File

@ -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<JobDetailsScreen> createState() => _JobDetailsScreenState();
@ -752,11 +753,14 @@ class _JobDetailsScreenState extends State<JobDetailsScreen> 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,

View File

@ -50,7 +50,10 @@ class _ServiceProjectScreenState extends State<ServiceProjectScreen>
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<ServiceProjectScreen>
backgroundColor: const Color(0xFFF5F5F5),
appBar: CustomAppBar(
title: "Service Projects",
projectName: 'All Service Projects',
onBackPressed: () => Get.toNamed('/dashboard'),
),
body: Column(