flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例
路由
做Android/iOS原生開(kāi)發(fā)的時(shí)候,要打開(kāi)一個(gè)新的頁(yè)面,你得知道你的目標(biāo)頁(yè)面對(duì)象,然后初始化一個(gè)Intent或者ViewController,再通過(guò)startActivity或者pushViewController來(lái)推出一個(gè)新的頁(yè)面,不能跟web一樣,直接丟一個(gè)鏈接地址就跳轉(zhuǎn)到新的頁(yè)面。當(dāng)然,可以自己去加一個(gè)中間層來(lái)實(shí)現(xiàn)這些功能。
Flutter里面是原生支持路由的。Flutter的framework提供了路由跳轉(zhuǎn)的實(shí)現(xiàn)。我們可以直接使用這些功能。
Flutter路由介紹
Flutter里面有路由支持所有的路由場(chǎng)景,push、pop頁(yè)面,頁(yè)面間的參數(shù)傳遞等等。flutter里面的路由可以分成兩種,一種是直接注冊(cè),不能傳遞參數(shù)。另一種要自己構(gòu)造實(shí)例,可以傳遞參數(shù)。我們暫時(shí)把它們規(guī)為靜態(tài)路由和動(dòng)態(tài)路由。
單頁(yè)面路由跳轉(zhuǎn)時(shí)注意不要有兩個(gè)materialapp,因?yàn)閷?dǎo)航是依賴(lài)于這個(gè)的,有兩個(gè),就會(huì)有兩個(gè)導(dǎo)航
一、兩種路由傳參方法: DetailScreen跳轉(zhuǎn)的路由組件
1.直接向路由子組件構(gòu)造函數(shù)傳參
Navigator.push( context, MaterialPageRoute( builder: (context) => DetailScreen(todo: todos[index]), ), ); 1.通過(guò)RouteSettings傳遞參數(shù) Navigator.push( context, MaterialPageRoute( builder: (context) => DetailScreen(), settings: RouteSettings( arguments: todos[index], ), ), );
二、定義路由:
1、在 MaterialApp 中添加屬性:
initialRoute 和 routes 來(lái)定義我們的路由 new MaterialApp( initialRoute: '/', routes: { '/': (context) => TodosScreen(todos: todos), '/detail': (context) => DetailScreen(), }, title: 'ssss', );
但要注意的是:當(dāng)使用 initialRoute 時(shí),需要確保你沒(méi)有同時(shí)定義 home 屬性。
2、 給特定的 route 傳參:
1) 定義需要傳遞的參數(shù)
class ScreenArguments { final String title; final String message; ScreenArguments(this.title, this.message); }
2) 創(chuàng)建組件來(lái)獲取參數(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) 把組件注冊(cè)到路由表中
MaterialApp( routes: { ExtractArgumentsScreen.routeName: (context) => ExtractArgumentsScreen(), }, );
4) 導(dǎo)航到組件
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, ); }, ); } }, );
到此這篇關(guān)于flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)flutter 路由跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解析Android應(yīng)用程序運(yùn)行機(jī)制
這篇文章主要介紹了Android應(yīng)用程序運(yùn)行機(jī)制,有需要的朋友可以參考一下2014-01-01實(shí)現(xiàn)qq中按返回鍵返回桌面不退出程序的實(shí)例
下面小編就為大家?guī)?lái)一篇實(shí)現(xiàn)qq中按返回鍵返回桌面不退出程序的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04Flutter Android端啟動(dòng)白屏問(wèn)題的解決
Flutter 應(yīng)用在 Android 端上啟動(dòng)時(shí)會(huì)有一段很明顯的白屏現(xiàn)象,白屏的時(shí)長(zhǎng)由設(shè)備的性能決定,設(shè)備性能越差,白屏?xí)r間越長(zhǎng)。這篇文章主要介紹了Flutter Android端啟動(dòng)白屏問(wèn)題的解決。感興趣的小伙伴們可以參考一下2018-07-07Android 使用 RxJava2 實(shí)現(xiàn)倒計(jì)時(shí)功能的示例代碼
本篇文章主要介紹了Android 使用 RxJava2 實(shí)現(xiàn)倒計(jì)時(shí)功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Android自定義AvatarImageView實(shí)現(xiàn)頭像顯示效果
這篇文章主要為大家詳細(xì)介紹了Android自定義AvatarImageView實(shí)現(xiàn)頭像顯示效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09android鬧鈴簡(jiǎn)單實(shí)現(xiàn)
本文給大家分享的是一段簡(jiǎn)單的實(shí)現(xiàn)Android系統(tǒng)的鬧鈴的代碼,非常實(shí)用,想做Android開(kāi)發(fā)的小伙伴們可以參考下。2015-03-03Android提高之MediaPlayer播放網(wǎng)絡(luò)視頻的實(shí)現(xiàn)方法
這篇文章主要介紹了Android的MediaPlayer播放網(wǎng)絡(luò)視頻的實(shí)現(xiàn)方法,是一個(gè)非常實(shí)用的功能,需要的朋友可以參考下2014-08-08kotlin object關(guān)鍵字單例模式實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了kotlin object關(guān)鍵字單例模式實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android ExpandableListView展開(kāi)列表控件使用實(shí)例
這篇文章主要介紹了Android ExpandableListView展開(kāi)列表控件使用實(shí)例,本文實(shí)現(xiàn)了一個(gè)類(lèi)似手機(jī)QQ好友列表的界面效果,需要的朋友可以參考下2014-07-07Android系列之Intent傳遞對(duì)象的幾種實(shí)例方法
Android系列之Intent傳遞對(duì)象的幾種實(shí)例方法,需要的朋友可以參考一下2013-05-05