selectTab method

  1. @override
void selectTab(
  1. int index, {
  2. BuildContext? context,
})
override

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]);
}