23 lines
596 B
Dart
23 lines
596 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
class NavItem {
|
|
final String label;
|
|
final IconData icon;
|
|
final String? route;
|
|
final List<NavItem> children;
|
|
|
|
const NavItem({
|
|
required this.label,
|
|
required this.icon,
|
|
this.route,
|
|
this.children = const [],
|
|
});
|
|
|
|
bool get hasChildren => children.isNotEmpty;
|
|
|
|
/// Devuelve true si la ruta actual coincide con este item o algún hijo.
|
|
bool isActiveOrAncestor(String currentRoute) {
|
|
if (route != null && currentRoute.startsWith(route!)) return true;
|
|
return children.any((c) => c.isActiveOrAncestor(currentRoute));
|
|
}
|
|
}
|