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.