Junior — Middle
Can you explain the concept and main features of Navigator 2.0?
sobes.tech AI
Answer from AI
Navigator 2.0 in Flutter is a new navigation system that provides more control over routing and navigation state compared to the traditional Navigator 1.0.
Main features of Navigator 2.0:
- Declarative approach: instead of calling push/pop methods, you describe the current navigation state through a list of pages.
- Support for URL and deep linking: allows synchronization of navigation state with the URL, which is important for web applications.
- Flexibility: enables implementation of complex navigation scenarios, such as nested navigation stacks.
- RouterDelegate and RouteInformationParser: key classes for managing navigation and parsing URLs.
Example of simplified usage of 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;
}
}
Thus, Navigator 2.0 allows for better control of navigation and integration with external sources, such as the browser URL.