點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們
開(kāi)源項(xiàng)目 OpenHarmony是每個(gè)人的 OpenHarmony孫澳
OpenHarmony知識(shí)體系組
簡(jiǎn)介
Arouter是一款適用于OpenAtom OpenHarmony(以下簡(jiǎn)稱(chēng)“OpenHarmony”)的輕量高效的頁(yè)面路由工具,相比原生的路由方案,Arouter更有優(yōu)勢(shì)。傳統(tǒng)的路由方案使用顯示Intent和隱式Intent進(jìn)行跳轉(zhuǎn),會(huì)存在一些問(wèn)題。使用顯式Intent耦合度過(guò)高,而使用隱式Intent集中式管理Path會(huì)導(dǎo)致協(xié)作困難。Arouter采用自定義的路由方案,通過(guò)解析標(biāo)準(zhǔn)URL進(jìn)行跳轉(zhuǎn),避免了直接依賴(lài)的問(wèn)題。使用分布式管理頁(yè)面配置,解決了集中式管理Path的問(wèn)題,整個(gè)路由跳轉(zhuǎn)過(guò)程更加透明,具有更好的擴(kuò)展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協(xié)作性和控制攔截能力,同時(shí)采用分布式管理頁(yè)面配置,提供了更好的擴(kuò)展性,目前支持SDK:OpenHarmony API Version 10版本。效果圖
?使用說(shuō)明
Arouter支持以下功能:
●支持頁(yè)面間路由跳轉(zhuǎn);
●支持帶參數(shù)跳轉(zhuǎn)及回調(diào);
●支持配置跳轉(zhuǎn)攔截器;
●支持預(yù)處理跳轉(zhuǎn)與否;
路由跳轉(zhuǎn)
1.不傳參跳轉(zhuǎn)通過(guò)Arouter.getInstance()創(chuàng)建路由對(duì)象,使用鏈?zhǔn)秸{(diào)用方法 build('')配置跳轉(zhuǎn)的頁(yè)面,navigation() 方法進(jìn)行頁(yè)面跳轉(zhuǎn)。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉(zhuǎn)的地址
.navigation()
2.傳參跳轉(zhuǎn)在不傳參跳轉(zhuǎn)的基礎(chǔ)上,跳轉(zhuǎn)之前通過(guò)withParams()進(jìn)行參數(shù)配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉(zhuǎn)的地址
.withParams({index:"--"})
.navigation()
3.路由回調(diào)路由回調(diào)需要配合NavigationCallback接口進(jìn)行,在路由前的頁(yè)面實(shí)現(xiàn)NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {
onInterrupt(postcard){},
onArrival(postcard){},
onActivityResult(data){}
}
然后將callback傳入 .navigationWithCallback()中進(jìn)行跳轉(zhuǎn)
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--")//需要跳轉(zhuǎn)的地址
.navigationWithCallback(callback)
在目標(biāo)頁(yè)面的onPageShow()生命周期中調(diào)用getPostcard()方法獲取到指定的postcard
import router from '@ohos.router';
if (postcard == null) {
postcard = Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);
}
使用 postcard.getNavigationCallback() 方法調(diào)用對(duì)應(yīng)的回調(diào)方法,即可回調(diào)源頁(yè)面實(shí)現(xiàn)的方法
postcard.getNavigationCallback().onActivityResult(params)
路由攔截
1.配置攔截器在攔截器中的process()方法中實(shí)現(xiàn)頁(yè)面的攔截,通過(guò)interceptorCallback.onInterrupt()中斷跳轉(zhuǎn),interceptorCallback.onContinue()繼續(xù)跳轉(zhuǎn)。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
// 選擇攔截的頁(yè)面,若跳轉(zhuǎn)時(shí)有該路徑則進(jìn)行攔截提示,若沒(méi)有則直接跳轉(zhuǎn)
if (Postcard.getUri() == 'pages/transit') {
// 選擇彈框
AlertDialog.show(
{
message: '被攔截了,點(diǎn)擊繼續(xù)跳轉(zhuǎn)',
primaryButton: {
value: '取消',
action: () => {
// 中斷跳轉(zhuǎn)
interceptorCallback.onInterrupt(postcard)
}
},
secondaryButton: {
value: '繼續(xù)',
action: () => {
// 繼續(xù)跳轉(zhuǎn)
interceptorCallback.onContinue(postcard);
}
},
}
)
} else {
// 繼續(xù)跳轉(zhuǎn)
interceptorCallback.onContinue(postcard);
}
}
}
2.注冊(cè)攔截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除攔截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置綠色通道在跳轉(zhuǎn)前使用.setGreenChannel()方法跳過(guò)攔截(true:跳過(guò)攔截)。
Arouter.getInstance()
.build("--/--")//需要跳轉(zhuǎn)的地址
.setGreenChannel(true)
.navigation()
5.配置預(yù)處理跳轉(zhuǎn)與否預(yù)處理:實(shí)現(xiàn) PretreatmentService 接口中 onPretreatment 方法,并返回一個(gè)Boolean值(true:繼續(xù)跳轉(zhuǎn),false:不跳轉(zhuǎn))。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
onPretreatment(postcardboolean{
return true
}
}
在跳轉(zhuǎn)前調(diào)用.setPretreatmentService() 方法,將 pretreatmentService傳入 setPretreatmentService()方法中完成預(yù)處理功能。
Arouter.getInstance()
.build(this.router)
.setPretreatmentService(pretreatmentService)
.navigationWithCallback(callback)
接口說(shuō)明
Arouter ?回調(diào)接口 ?下載安裝
ohpminstall@ohos/arouteronactivityresult
源碼鏈接
https://gitee.com/openharmony-tpc/arouter-api-onActivityResult
原文標(biāo)題:【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具
文章出處:【微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2291瀏覽量
42632 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3611瀏覽量
15962
原文標(biāo)題:【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論