Flutter路由跳轉詳解

flutter中跳轉一直記了忘,忘了記,在這裏記錄下吧:

和安卓中的intent類似,跳轉新頁面需要當前上下文以及需要跳轉的頁面。如果有數據需要傳輸也可,參數通過跳轉頁面的構造方法傳遞。

1、不帶參數直接跳轉

///不帶參數的路由表跳轉
Navigator.pushNamed(context, routeName);

2、帶參數直接跳轉

///帶參數的路由表跳轉 ,one、two爲參數。需要在對應頁面寫好對應構造方法
Navigator.pushNamed(context, routeName(one,two));

這兩種頁面跳轉我理解爲普通跳轉,即按返回鍵可以返回(類似於安卓中的入棧)。下面的都可以利用構造方法爲跳轉的新頁面進行傳遞參數,爲了簡潔(實際上是因爲懶)就不重複寫了。

3、跳轉新頁面並且替換,比如登錄頁跳轉主頁

///跳轉新頁面並且替換
Navigator.pushReplacementNamed(context, routeName);

4、跳轉到新的路由,並且關閉給定路由的之前的所有頁面。可用於退出登錄返回到登錄頁面

///跳轉到新的路由,並且關閉給定路由的之前的所有頁面
Navigator.pushNamedAndRemoveUntil(context, '/calendar', ModalRoute.withName('/'));

5、帶參數的路由跳轉,並且監聽返回

///帶參數的路由跳轉,並且監聽返回
Navigator.push(context, new MaterialPageRoute(builder: (context) => new NotifyPage())).then((res) {
      ///獲取返回處理
    });

Navigator 的 push 返回的是一個 Future,這個Future 的作用是在頁面返回時被調用的。也就是你可以通過 Navigator 的 pop 時返回參數,之後在 Future 中可以的監聽中處理頁面的返回結果。處理方法如下:

@optionalTypeArgs
static Future<T> push<T extends Object>(BuildContext context, Route<T> route) {
  return Navigator.of(context).push(route);
}

好了,先這樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章