Sobes.tech
Junior — Middle

Pode explicar o conceito e as principais características do Navigatior 2.0?

sobes.tech IA

Resposta da IA

O Navigator 2.0 no Flutter é um novo sistema de navegação que oferece maior controlo sobre o roteamento e o estado de navegação em comparação com o Navigator 1.0 clássico.

Principais características do Navigator 2.0:

  • Abordagem declarativa: em vez de chamar métodos push/pop, descreve o estado atual da navegação através de uma lista de páginas.
  • Suporte para URL e deep linking: é possível sincronizar o estado de navegação com a URL, o que é importante para aplicações web.
  • Flexibilidade: permite implementar cenários de navegação complexos, como pilhas de navegação aninhadas.
  • RouterDelegate e RouteInformationParser: classes-chave para gerir a navegação e analisar URLs.

Exemplo de uso simplificado do 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;
  }
}

Assim, o Navigator 2.0 permite um melhor controlo da navegação e a sua integração com fontes externas, como a URL do navegador.