你能解釋一下這個導航是如何作業的嗎?
為什么應用程式從LoginPage打開開始?這是否意味著該initialRoute屬性會影響 中的home屬性MaterialApp?
如果pop從LoginPage然后HomePage將被打開。這是否意味著HomePage在initialRoute發布之前已打開?
return MaterialApp(
home: const HomePage(),
initialRoute: '/login',
onGenerateRoute: _getRoute,
);
Route<dynamic>? _getRoute(RouteSettings settings) {
if (settings.name != '/login') {
return null;
}
return MaterialPageRoute<void>(
settings: settings,
builder: (BuildContext context) => const LoginPage(),
fullscreenDialog: true,
);
}
此處顯示 https://github.com/material-components/material-components-flutter-codelabs/blob/102-starter_and_101-complete/mdc_100_series/lib/app.dart
uj5u.com熱心網友回復:
正如官方檔案中所述,我們應該使用initialRoute或home屬性:
Warning: When using initialRoute, don’t define a home property.
來源
uj5u.com熱心網友回復:
關于房產
應用程式默認路由的小部件 (
Navigator.defaultRouteName, which is /)。
這是應用正常啟動時最先顯示的路由,除非指定了initialRoute。這也是不能顯示initialRoute時顯示的路由。
但更有趣的是關于 pop 和來自doc
如果路由名稱以斜杠開頭,則將其視為“深層鏈接”,并且在推送此路由之前,還將推送通向此路由的路由。例如,如果路由是 /a/b/c,那么應用程式將按順序加載四個路由 /、/a、/a/b 和 /a/b/c。即使路由只是 /a,應用程式也會以 / 和 /a 加載。您可以使用 onGenerateInitialRoutes 屬性來覆寫此行為。
我的理解是 app 以 開頭initialRoute,而該home屬性也像 root 一樣對待/,最后一次彈出時它將在home.
您還可以檢查Navigator 始終以路線 '/' 開頭
該MaterialApp配置頂級導航搜索按以下順序路線:
對于 / 路由,使用 home 屬性(如果非空)。
否則,如果路由表有路由條目,則使用路由表。
否則,將呼叫 onGenerateRoute(如果提供)。對于任何未由 home 和 routes 處理的有效路由,它應該回傳一個非空值。
最后,如果所有其他方法都失敗,則呼叫 onUnknownRoute。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342576.html
標籤:扑
