import 'package:go_router/go_router.dart'; import 'package:tatlock_ui/features/control_room/presentation/pages/control_room_page.dart'; /// Route paths for Control Room. abstract class ControlRoomRoutes { static const base = '/control-room'; static const containers = '/control-room/containers'; static const networks = '/control-room/networks'; static const volumes = '/control-room/volumes'; static const images = '/control-room/images'; } /// Control Room section from route. ControlRoomSection? sectionFromPath(String path) { if (path.startsWith(ControlRoomRoutes.networks)) { return ControlRoomSection.networks; } else if (path.startsWith(ControlRoomRoutes.volumes)) { return ControlRoomSection.volumes; } else if (path.startsWith(ControlRoomRoutes.images)) { return ControlRoomSection.images; } else if (path.startsWith(ControlRoomRoutes.containers) || path == ControlRoomRoutes.base) { return ControlRoomSection.containers; } return null; } /// Get route path for a section. String pathForSection(ControlRoomSection section) { switch (section) { case ControlRoomSection.containers: return ControlRoomRoutes.containers; case ControlRoomSection.networks: return ControlRoomRoutes.networks; case ControlRoomSection.volumes: return ControlRoomRoutes.volumes; case ControlRoomSection.images: return ControlRoomRoutes.images; } } /// Control Room routes for go_router. List controlRoomRoutes() { return [ // Redirect /control-room to /control-room/containers GoRoute( path: ControlRoomRoutes.base, name: 'controlRoom', redirect: (context, state) => ControlRoomRoutes.containers, ), // Section routes GoRoute( path: ControlRoomRoutes.containers, name: 'controlRoomContainers', builder: (context, state) => const ControlRoomPage(section: ControlRoomSection.containers), ), GoRoute( path: ControlRoomRoutes.networks, name: 'controlRoomNetworks', builder: (context, state) => const ControlRoomPage(section: ControlRoomSection.networks), ), GoRoute( path: ControlRoomRoutes.volumes, name: 'controlRoomVolumes', builder: (context, state) => const ControlRoomPage(section: ControlRoomSection.volumes), ), GoRoute( path: ControlRoomRoutes.images, name: 'controlRoomImages', builder: (context, state) => const ControlRoomPage(section: ControlRoomSection.images), ), ]; }