Sobes.tech
Junior — Middle

¿Puede explicar la concepto y las características principales de Navigatior 2.0?

sobes.tech AI

Respuesta de la IA

Navigator 2.0 en Flutter es un nuevo sistema de navegación que ofrece mayor control sobre el enrutamiento y el estado de navegación en comparación con el Navigator 1.0 clásico.

Características principales de Navigator 2.0:

  • Enfoque declarativo: en lugar de llamar a métodos push/pop, describes el estado actual de la navegación a través de una lista de páginas.
  • Soporte para URL y deep linking: se puede sincronizar el estado de navegación con la URL, lo cual es importante para aplicaciones web.
  • Flexibilidad: permite implementar escenarios de navegación complejos, como pilas de navegación anidadas.
  • RouterDelegate y RouteInformationParser: clases clave para gestionar la navegación y analizar URLs.

Ejemplo de uso simplificado de Navigator 2.0:

class MyRouterDelegate extends RouterDelegate<MyRoutePath> with ChangeNotifier, PopNavigatorRouterDelegateMixin<MyRoutePath> {
  final GlobalKey<NavigatorState> navigatorKey;

  MyRouterDelegate() : navigatorKey = GlobalKey<NavigatorState>();

  MyRoutePath _currentPath;

  @override
  Widget build(BuildContext context) {
    return Navigator(
      key: navigatorKey,
      pages: [
        MaterialPage(child: HomeScreen()),
        if (_currentPath.isDetailsPage) MaterialPage(child: DetailsScreen()),
      ],
      onPopPage: (route, result) {
        if (!route.didPop(result)) return false;
        _currentPath = MyRoutePath.home();
        notifyListeners();
        return true;
      },
    );
  }

  @override
  Future<void> setNewRoutePath(MyRoutePath path) async {
    _currentPath = path;
  }
}

De esta manera, Navigator 2.0 permite un mejor control de la navegación e integrarla con fuentes externas, como la URL del navegador.