selectTab method
Implementation
@override
void selectTab(int index, {BuildContext? context}) async {
if (index >= _tabs.length) return;
AppConfig.logger.d("Selecting tab index: $index");
HomeTabItem selectedTab = _tabs[index];
NeomFlowTracker.trackScreen('home_tab_${selectedTab.title}');
if (selectedTab.isActionButton) {
if(context != null) {
if(selectedTab.title == AppTranslationConstants.add) {
modalBottomAddMenu(context);
}
}
return;
}
if (selectedTab.route != null) {
Sint.offNamed(selectedTab.route!);
return;
}
isLoading.value = true;
try {
if (index == 0 && timelineServiceImpl != null) {
timelineServiceImpl!.setScrollOffset(0);
await setInitialTimeline();
}
int targetPageIndex = _getPageIndexFromVisualIndex(index);
if (pageController.hasClients) {
if (pageController.positions.length > 1) {
AppConfig.logger.w("PageController attached to multiple views. Skipping jump.");
} else {
pageController.jumpToPage(targetPageIndex);
}
_currentIndex.value = index;
}
} catch (e, st) {
NeomErrorLogger.recordError(e, st, module: 'neom_home', operation: 'selectTab');
}
isLoading.value = false;
update([AppPageIdConstants.home]);
}