import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/constants/assets.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/view_models/tender_detail_view_model.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_action.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_card.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; class TenderDetailTabletPage extends StatefulWidget { final String tenderId; const TenderDetailTabletPage({required this.tenderId, super.key}); @override State createState() => _TenderDetailTabletPageState(); } class _TenderDetailTabletPageState extends State { late final TenderDetailViewModel viewModel; @override void initState() { viewModel = context.read(); viewModel.addListener(_viewModelListener); super.initState(); } void _viewModelListener() { if (viewModel.status.isNotEmpty && viewModel.status == 'submitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of( context, ).showSnackBar(SnackBar(content: Text('tender submitted successfully!'))); } if (viewModel.status.isNotEmpty && viewModel.status == 'unsubmitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('tender submitted removed sucessfully!')), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'rejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of( context, ).showSnackBar(SnackBar(content: Text('tender rejected sucessfully!'))); } if (viewModel.status.isNotEmpty && viewModel.status == 'unrejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('tender reject removed sucessfully!')), ); } // if (viewModel.errorMessage != null) { // ScaffoldMessenger.of(context).showSnackBar( // SnackBar( // backgroundColor: AppColors.errorColor, // content: Text(viewModel.errorMessage!), // ), // ); // } } @override void dispose() { viewModel.removeListener(_viewModelListener); super.dispose(); } @override Widget build(BuildContext context) { final GlobalKey key = GlobalKey(); return Scaffold( key: key, backgroundColor: AppColors.backgroundColor, appBar: PreferredSize( preferredSize: const Size.fromHeight(64), child: AppBar( backgroundColor: AppColors.backgroundColor, elevation: 0, titleSpacing: 0, leading: Padding( padding: EdgeInsetsDirectional.only(start: 24.0.w()), child: SvgPicture.asset(AssetsManager.logoSmall), ), actions: [ IconButton( icon: Padding( padding: EdgeInsetsDirectional.only(end: 24.0.w()), child: SvgPicture.asset( AssetsManager.menu, height: 32.0.w(), width: 32.0.w(), ), ), onPressed: () => key.currentState!.openDrawer(), ), ], ), ), drawer: TabletNavigationWidget( currentIndex: 1, // Home is index 0 onTabChanged: (index) { // Handle navigation to other tabs switch (index) { case 0: Router.neglect(context, () => context.go('/home')); context.read().init(); break; case 1: break; case 2: // Navigate to profile context.pop(); Router.neglect(context, () => context.go('/profile')); break; } }, ), body: Consumer( builder: (context, tenderViewModel, child) { if (tenderViewModel.isLoading) { return const Center( child: CircularProgressIndicator(color: AppColors.secondary50), ); } if (tenderViewModel.errorMessage != null) { return Center(child: Text(tenderViewModel.errorMessage!)); } final detail = tenderViewModel.tenderDetail; if (detail == null) { return const Center(child: Text('No tender details available')); } return SingleChildScrollView( child: Center( child: SizedBox( width: 768, child: Padding( padding: const EdgeInsets.all(24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TenderDetailHeader(isScreenBig: true, detail: detail), SizedBox(height: 28.0.h()), TenderDetailCard(detail: detail), SizedBox(height: 24.0.h()), TenderDetailActions(isScreenBig: true, detail: detail), ], ), ), ), ), ); }, ), ); } }