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);
}
好了,先這樣。