import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/services/app_initalizer.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/views/home/home_state.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher_string.dart'; class MainCategories extends StatelessWidget { const MainCategories({super.key}); void _onTap(String link, String label, BuildContext context) { // label را اضافه کنید // اگر روی "آمار و داده" کلیک شد، مستقیم به تب مربوطه برود if (label == 'آمار و داده') { final state = context.read(); // فرض ما این است که صفحه آمار و داده در ایندکس 2 قرار دارد // اگر ایندکس دیگری است، آن را تغییر دهید const statsPageIndex = 2; state.currentPageIndex = statsPageIndex; state.tabController.animateTo(statsPageIndex); return; // از ادامه اجرای کد جلوگیری می‌کند } if (link.startsWith('http')) { AppInitializer.openWebLink( context, '$link?accessToken=${RequestService.token}', mode: LaunchMode.inAppWebView, ); // ignore: avoid_print print("your goddamn token is :${RequestService.token}"); } else if (link.startsWith('tab-')) { final state = context.read(); int index = int.parse(link.replaceAll('tab-', '')); state.currentPageIndex = index; state.tabController.animateTo(index); } else { Navigator.of(context).pushNamed(link); } } @override Widget build(BuildContext context) { final state = context.read(); return Wrap( alignment: WrapAlignment.start, children: state.menuItems .map( (e) => GestureDetector( onTap: () => _onTap(e.link, e.label, context), // لیبل را اینجا پاس دهید child: SizedBox( width: (MediaQuery.of(context).size.width) / 4, child: Column( children: [ Container( width: 56, height: 56, padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Theme.of(context).colorScheme.surface, borderRadius: DesignConfig.lowBorderRadius, boxShadow: DesignConfig.defaultShadow, ), child: SvgPicture.asset(e.asset), ), const SizedBox(height: 4), DidvanText( e.label, color: Theme.of(context).colorScheme.title, style: Theme.of(context).textTheme.labelSmall, fontWeight: FontWeight.w600, ), const SizedBox(height: 12), ], ), ), ), ) .toList(), ); } }