import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:marco/controller/directory/directory_controller.dart'; import 'package:marco/controller/directory/notes_controller.dart'; import 'package:marco/controller/project_controller.dart'; import 'package:marco/helpers/widgets/my_spacing.dart'; import 'package:marco/helpers/widgets/my_text.dart'; import 'package:marco/view/directory/directory_view.dart'; import 'package:marco/view/directory/notes_view.dart'; class DirectoryMainScreen extends StatelessWidget { DirectoryMainScreen({super.key}); final DirectoryController controller = Get.put(DirectoryController()); final NotesController notesController = Get.put(NotesController()); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: PreferredSize( preferredSize: const Size.fromHeight(72), child: AppBar( backgroundColor: const Color(0xFFF5F5F5), elevation: 0.5, automaticallyImplyLeading: false, titleSpacing: 0, title: Padding( padding: MySpacing.xy(16, 0), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ IconButton( icon: const Icon(Icons.arrow_back_ios_new, color: Colors.black, size: 20), onPressed: () => Get.offNamed('/dashboard'), ), MySpacing.width(8), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ MyText.titleLarge( 'Directory', fontWeight: 700, color: Colors.black, ), MySpacing.height(2), GetBuilder( builder: (projectController) { final projectName = projectController.selectedProject?.name ?? 'Select Project'; return Row( children: [ const Icon(Icons.work_outline, size: 14, color: Colors.grey), MySpacing.width(4), Expanded( child: MyText.bodySmall( projectName, fontWeight: 600, overflow: TextOverflow.ellipsis, color: Colors.grey[700], ), ), ], ); }, ), ], ), ), ], ), ), ), ), body: SafeArea( child: Column( children: [ // Toggle between Directory and Notes Padding( padding: MySpacing.fromLTRB(8, 12, 8, 5), child: Obx(() { final isNotesView = controller.isNotesView.value; return Container( padding: EdgeInsets.all(2), decoration: BoxDecoration( color: const Color(0xFFF0F0F0), borderRadius: BorderRadius.circular(10), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.05), blurRadius: 4, offset: const Offset(0, 2), ), ], ), child: Row( children: [ Expanded( child: GestureDetector( onTap: () => controller.isNotesView.value = false, child: AnimatedContainer( duration: const Duration(milliseconds: 200), padding: const EdgeInsets.symmetric( vertical: 6, horizontal: 10), decoration: BoxDecoration( color: !isNotesView ? Colors.red : Colors.transparent, borderRadius: BorderRadius.circular(8), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.contacts, size: 16, color: !isNotesView ? Colors.white : Colors.grey), const SizedBox(width: 6), Text( 'Directory', style: TextStyle( color: !isNotesView ? Colors.white : Colors.grey, fontWeight: FontWeight.w600, fontSize: 13, ), ), ], ), ), ), ), Expanded( child: GestureDetector( onTap: () => controller.isNotesView.value = true, child: AnimatedContainer( duration: const Duration(milliseconds: 200), padding: const EdgeInsets.symmetric( vertical: 6, horizontal: 10), decoration: BoxDecoration( color: isNotesView ? Colors.red : Colors.transparent, borderRadius: BorderRadius.circular(8), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.notes, size: 16, color: isNotesView ? Colors.white : Colors.grey), const SizedBox(width: 6), Text( 'Notes', style: TextStyle( color: isNotesView ? Colors.white : Colors.grey, fontWeight: FontWeight.w600, fontSize: 13, ), ), ], ), ), ), ), ], ), ); }), ), // Main View Expanded( child: Obx(() => controller.isNotesView.value ? NotesView() : DirectoryView()), ), ], ), ), ); } }