Junior — Middle
Meg tudná magyarázni a Navigatior 2.0 koncepcióját és fő jellemzőit?
sobes.tech MI
Válasz az MI-től
A Navigator 2.0 a Flutterben egy új navigációs rendszer, amely nagyobb kontrollt biztosít az útvonalválasztás és a navigációs állapot felett a klasszikus Navigator 1.0-hoz képest.
A Navigator 2.0 fő jellemzői:
- Deklaratív megközelítés: a push/pop metódusok hívása helyett a navigáció aktuális állapotát egy oldallistán keresztül írja le.
- URL és deep linking támogatás: lehetőség van a navigáció állapotának szinkronizálására az URL-lel, ami fontos webes alkalmazásoknál.
- Rugalmasság: lehetővé teszi összetett navigációs forgatókönyvek, például beágyazott navigációs veremek megvalósítását.
- RouterDelegate és RouteInformationParser: kulcsosztályok a navigáció kezeléséhez és az URL-ek elemzéséhez.
Egyszerűsített Navigator 2.0 használati példa:
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;
}
}
Ezáltal a Navigator 2.0 jobb kontrollt tesz lehetővé a navigáció felett, és integrálható külső forrásokkal, például a böngésző URL-jével.