flutter 路由跳轉的實現(xiàn)示例
路由
做Android/iOS原生開發(fā)的時候,要打開一個新的頁面,你得知道你的目標頁面對象,然后初始化一個Intent或者ViewController,再通過startActivity或者pushViewController來推出一個新的頁面,不能跟web一樣,直接丟一個鏈接地址就跳轉到新的頁面。當然,可以自己去加一個中間層來實現(xiàn)這些功能。
Flutter里面是原生支持路由的。Flutter的framework提供了路由跳轉的實現(xiàn)。我們可以直接使用這些功能。
Flutter路由介紹
Flutter里面有路由支持所有的路由場景,push、pop頁面,頁面間的參數(shù)傳遞等等。flutter里面的路由可以分成兩種,一種是直接注冊,不能傳遞參數(shù)。另一種要自己構造實例,可以傳遞參數(shù)。我們暫時把它們規(guī)為靜態(tài)路由和動態(tài)路由。
單頁面路由跳轉時注意不要有兩個materialapp,因為導航是依賴于這個的,有兩個,就會有兩個導航
一、兩種路由傳參方法: DetailScreen跳轉的路由組件
1.直接向路由子組件構造函數(shù)傳參
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailScreen(todo: todos[index]),
),
);
1.通過RouteSettings傳遞參數(shù)
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailScreen(),
settings: RouteSettings(
arguments: todos[index],
),
),
);
二、定義路由:
1、在 MaterialApp 中添加屬性:
initialRoute 和 routes 來定義我們的路由
new MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => TodosScreen(todos: todos),
'/detail': (context) => DetailScreen(),
},
title: 'ssss',
);
但要注意的是:當使用 initialRoute 時,需要確保你沒有同時定義 home 屬性。
2、 給特定的 route 傳參:
1) 定義需要傳遞的參數(shù)
class ScreenArguments {
final String title;
final String message;
ScreenArguments(this.title, this.message);
}
2) 創(chuàng)建組件來獲取參數(shù)
class ExtractArgumentsScreen extends StatelessWidget {
static const routeName = '/extractArguments';
@override
Widget build(BuildContext context) {
final ScreenArguments args = ModalRoute.of(context).settings.arguments;
return Scaffold(
);
}
}
3) 把組件注冊到路由表中
MaterialApp(
routes: {
ExtractArgumentsScreen.routeName: (context) => ExtractArgumentsScreen(),
},
);
4) 導航到組件
RaisedButton(
onPressed: () {
Navigator.pushNamed(
context,
ExtractArgumentsScreen.routeName,
arguments: ScreenArguments(
'Extract Arguments Screen',
'This message is extracted in the build method.',
),
);
},
),
5) onGenerateRoute 提取參數(shù)
MaterialApp(
onGenerateRoute: (settings) {
if (settings.name == PassArgumentsScreen.routeName) {
final ScreenArguments args = settings.arguments;
return MaterialPageRoute(
builder: (context) {
return PassArgumentsScreen(
title: args.title,
message: args.message,
);
},
);
}
},
);
到此這篇關于flutter 路由跳轉的實現(xiàn)示例的文章就介紹到這了,更多相關flutter 路由跳轉內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android 使用 RxJava2 實現(xiàn)倒計時功能的示例代碼
本篇文章主要介紹了Android 使用 RxJava2 實現(xiàn)倒計時功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
Android自定義AvatarImageView實現(xiàn)頭像顯示效果
這篇文章主要為大家詳細介紹了Android自定義AvatarImageView實現(xiàn)頭像顯示效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
Android提高之MediaPlayer播放網絡視頻的實現(xiàn)方法
這篇文章主要介紹了Android的MediaPlayer播放網絡視頻的實現(xiàn)方法,是一個非常實用的功能,需要的朋友可以參考下2014-08-08
kotlin object關鍵字單例模式實現(xiàn)示例詳解
這篇文章主要為大家介紹了kotlin object關鍵字單例模式實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android ExpandableListView展開列表控件使用實例
這篇文章主要介紹了Android ExpandableListView展開列表控件使用實例,本文實現(xiàn)了一個類似手機QQ好友列表的界面效果,需要的朋友可以參考下2014-07-07

