Files
AmirReza Jamali 17ccd9d464
continuous-integration/drone/push Build is passing
Navigate recommended tenders label to tab
2026-06-28 11:42:45 +03:30

61 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/services/tab_navigation_service.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/shared/responsive_builder.dart';
import '../../../view_models/tenders_view_model.dart';
import 'd_tenders_page.dart';
import 'm_tenders_page.dart';
import 't_tenders_page.dart';
class TendersScreen extends StatefulWidget {
const TendersScreen({this.initialTab, super.key});
final String? initialTab;
@override
State<TendersScreen> createState() => _TendersScreenState();
}
class _TendersScreenState extends State<TendersScreen> {
late final TendersViewModel _viewModel;
late final TabNavigationService _tabService;
@override
void initState() {
super.initState();
_viewModel = context.read<TendersViewModel>();
_tabService = context.read<TabNavigationService>();
_tabService.addListener(_onTabChanged);
WidgetsBinding.instance.addPostFrameCallback((_) {
_viewModel.init(context);
});
}
@override
void dispose() {
_tabService.removeListener(_onTabChanged);
super.dispose();
}
void _onTabChanged() {
// Tab index 1 is Tenders
if (_tabService.currentTabIndex == 1 && mounted) {
_viewModel.init(context);
}
}
@override
Widget build(BuildContext context) {
SizeConfig.init(context);
final initialSelectedTab = widget.initialTab == 'recommended' ? 1 : 0;
return ResponsiveBuilder(
mobile: MobileTendersPage(initialSelectedTab: initialSelectedTab),
tablet: TabletTendersPage(initialSelectedTab: initialSelectedTab),
desktop: DesktopTendersPage(initialSelectedTab: initialSelectedTab),
);
}
}