Files
friflex_flutter_starter/lib/features/main/presentation/main_routes.dart

47 lines
1.7 KiB
Dart
Raw Permalink Normal View History

2025-01-21 14:24:31 +03:00
import 'package:flutter/widgets.dart';
import 'package:friflex_starter/features/main/presentation/screens/main_detail_screen.dart';
2025-01-21 14:24:31 +03:00
import 'package:friflex_starter/features/main/presentation/screens/main_screen.dart';
import 'package:go_router/go_router.dart';
abstract final class MainRoutes {
/// Название роута главной страницы
static const String mainScreenName = 'main_screen';
/// Название роута экрана с деталями
static const String mainDetailScreenName = 'main_detail_screen';
2025-01-21 14:24:31 +03:00
/// Путь роута страницы профиля пользователя
static const String _mainScreenPath = '/main';
/// Путь роута экрана с деталями
static const String _mainDetailScreenPath = '/main/detail';
2025-01-21 14:24:31 +03:00
/// Метод для построения ветки роутов по фиче профиля пользователя
///
/// Принимает:
/// - [routes] - вложенные роуты
static StatefulShellBranch buildShellBranch({
List<RouteBase> routes = const [],
List<NavigatorObserver>? observers,
}) => StatefulShellBranch(
initialLocation: _mainScreenPath,
observers: observers,
routes: [
...routes,
GoRoute(
path: _mainScreenPath,
name: mainScreenName,
builder: (context, state) => const MainScreen(),
2025-01-21 14:24:31 +03:00
routes: [
// Пример вложенного роута для главного экрана
2025-01-21 14:24:31 +03:00
GoRoute(
path: _mainDetailScreenPath,
name: mainDetailScreenName,
builder: (context, state) => const MainDetailScreen(),
2025-01-21 14:24:31 +03:00
),
],
),
],
);
2025-01-21 14:24:31 +03:00
}