flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例
路由
做Android/iOS原生開發(fā)的時(shí)候,要打開一個(gè)新的頁面,你得知道你的目標(biāo)頁面對象,然后初始化一個(gè)Intent或者ViewController,再通過startActivity或者pushViewController來推出一個(gè)新的頁面,不能跟web一樣,直接丟一個(gè)鏈接地址就跳轉(zhuǎn)到新的頁面。當(dāng)然,可以自己去加一個(gè)中間層來實(shí)現(xiàn)這些功能。
Flutter里面是原生支持路由的。Flutter的framework提供了路由跳轉(zhuǎn)的實(shí)現(xiàn)。我們可以直接使用這些功能。
Flutter路由介紹
Flutter里面有路由支持所有的路由場景,push、pop頁面,頁面間的參數(shù)傳遞等等。flutter里面的路由可以分成兩種,一種是直接注冊,不能傳遞參數(shù)。另一種要自己構(gòu)造實(shí)例,可以傳遞參數(shù)。我們暫時(shí)把它們規(guī)為靜態(tài)路由和動(dòng)態(tài)路由。
單頁面路由跳轉(zhuǎn)時(shí)注意不要有兩個(gè)materialapp,因?yàn)閷?dǎo)航是依賴于這個(gè)的,有兩個(gè),就會(huì)有兩個(gè)導(dǎo)航
一、兩種路由傳參方法: DetailScreen跳轉(zhuǎn)的路由組件
1.直接向路由子組件構(gòu)造函數(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',
);
但要注意的是:當(dāng)使用 initialRoute 時(shí),需要確保你沒有同時(shí)定義 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) 導(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Jetpack Compose圖片組件使用實(shí)例詳細(xì)講解
在Compose中,圖片組件主要有兩種,分別是顯示圖標(biāo)的Icon組件和顯示圖片的Image組件,當(dāng)我們顯示一系列的小圖標(biāo)的時(shí)候,我們可以使用Icon組件,當(dāng)顯示圖片時(shí),我們就用專用的Image組件2023-04-04
Android使用AnimationDrawable實(shí)現(xiàn)閃爍紅光動(dòng)畫效果(案例詳解)
這篇文章主要介紹了Android使用AnimationDrawable實(shí)現(xiàn)閃爍紅光動(dòng)畫效果,實(shí)現(xiàn)閃爍紅光效果可以使用Android中的Animation和Drawable資源,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
使用 Swift 語言編寫 Android 應(yīng)用入門
為了能順利使用這份向?qū)?,你需要? 1. 可以編譯Swift源碼的Linux環(huán)境。stdlib目前只能在Linux環(huán)境下編譯成安卓可用版本。在嘗試為安卓構(gòu)建之前,確保你能夠參考Swift項(xiàng)目的README為Linux做編譯。2016-04-04
android studio 3.6.1導(dǎo)入項(xiàng)目報(bào)錯(cuò)提示無法下載classpath里的內(nèi)容
這篇文章主要介紹了android studio 3.6.1導(dǎo)入項(xiàng)目報(bào)錯(cuò)提示無法下載classpath里的內(nèi)容,本文通過原因分析通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程
這篇文章主要介紹了AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Flutter banner_view 輪播圖的使用及實(shí)現(xiàn)代碼
這篇文章主要介紹了Flutter banner_view 輪播圖的使用及實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07
Android APK使用Debug簽名重新打包 Eclipse更改默認(rèn)Debug簽名
這篇文章主要介紹了Android APK使用Debug簽名重新打包 Eclipse更改默認(rèn)Debug簽名等內(nèi)容,需要的朋友可以參考下2015-04-04

