跳到主內容

深度連結

當應用收到新 URL 時導航至相應路由。

深度連結(Deep links)不僅能開啟應用,還能將使用者直接帶到應用內部的特定位置。例如,點選運動鞋廣告中的深度連結可以開啟購物應用,並直接顯示該特定鞋款的產品頁面。

Flutter 支援 iOS、Android 和 Web 上的深度連結。開啟 URL 會在應用中顯示對應的螢幕。透過以下步驟,你可以使用命名路由(透過 routes 引數或 onGenerateRoute),或者使用 Router 小部件來啟動並顯示路由。

如果你在網頁瀏覽器中執行應用,則無需額外設定。路由路徑的處理方式與 iOS 或 Android 深度連結相同。預設情況下,Web 應用使用以下模式從 URL 片段讀取深度連結路徑:/#/path/to/app/screen,但這可以透過為你的應用配置 URL 策略來更改。

如果你更喜歡透過影片學習,請觀看以下影片:

在 YouTube 新標籤頁中觀看:“Flutter 中的深度連結”

開始使用

#

若要開始,請檢視我們的 Android 和 iOS 實戰手冊(Cookbooks):

從基於外掛的深度連結遷移

#

如果你按照 Deep Links and Flutter applications(Medium 上的免費文章)所述編寫了外掛來處理深度連結,則應停用 Flutter 的預設深度連結處理程式。為此,請在 Info.plist 中將 FlutterDeepLinkingEnabled 設定為 false,或者AndroidManifest.xml 中將 flutter_deeplinking_enabled 設定為 false。

行為

#

行為會根據平臺以及應用是否已啟動並執行而略有不同。

平臺 / 場景使用 Navigator使用 Router
iOS (未啟動) 應用獲取 initialRoute ("/"),並在短時間後獲取一個 pushRoute 應用獲取 initialRoute ("/"),並在短時間後使用 RouteInformationParser 解析路由並呼叫 RouterDelegate.setNewRoutePath,從而配置帶有相應頁面的 Navigator。
Android (未啟動) 應用獲取包含該路由 ("/deeplink") 的 initialRoute 應用獲取 initialRoute ("/deeplink") 並將其傳遞給 RouteInformationParser 進行解析,然後呼叫 RouterDelegate.setNewRoutePath,從而配置帶有相應頁面的 Navigator。
iOS (已啟動) 呼叫 pushRoute 解析路徑,並使用一組新的頁面配置 Navigator。
Android (已啟動) 呼叫 pushRoute 解析路徑,並使用一組新的頁面配置 Navigator。

當使用 Router 小部件時,你的應用能夠在執行期間開啟新深度連結時替換當前的一組頁面。

瞭解更多

#