點擊藍字 ╳ 關注我們
開源項目 OpenHarmony是每個人的 OpenHarmony
孫澳
OpenHarmony知識體系組
簡介
Arouter是一款適用于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)的輕量高效的頁面路由工具,相比原生的路由方案,Arouter更有優勢。傳統的路由方案使用顯示Intent和隱式Intent進行跳轉,會存在一些問題。使用顯式Intent耦合度過高,而使用隱式Intent集中式管理Path會導致協作困難。Arouter采用自定義的路由方案,通過解析標準URL進行跳轉,避免了直接依賴的問題。使用分布式管理頁面配置,解決了集中式管理Path的問題,整個路由跳轉過程更加透明,具有更好的擴展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協作性和控制攔截能力,同時采用分布式管理頁面配置,提供了更好的擴展性,目前支持SDK:OpenHarmony API Version 10版本。效果圖

使用說明
Arouter支持以下功能:
●支持頁面間路由跳轉;
●支持帶參數跳轉及回調;
●支持配置跳轉攔截器;
●支持預處理跳轉與否;
路由跳轉
1.不傳參跳轉通過Arouter.getInstance()創建路由對象,使用鏈式調用方法 build('')配置跳轉的頁面,navigation() 方法進行頁面跳轉。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉的地址
.navigation()
2.傳參跳轉在不傳參跳轉的基礎上,跳轉之前通過withParams()進行參數配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉的地址
.withParams({index:"--"})
.navigation()
3.路由回調路由回調需要配合NavigationCallback接口進行,在路由前的頁面實現NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {
onInterrupt(postcard){},
onArrival(postcard){},
onActivityResult(data){}
}
然后將callback傳入 .navigationWithCallback()中進行跳轉
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--")//需要跳轉的地址
.navigationWithCallback(callback)
在目標頁面的onPageShow()生命周期中調用getPostcard()方法獲取到指定的postcard
import router from '@ohos.router';
if (postcard == null) {
postcard = Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);
}
使用 postcard.getNavigationCallback() 方法調用對應的回調方法,即可回調源頁面實現的方法
postcard.getNavigationCallback().onActivityResult(params)
路由攔截
1.配置攔截器在攔截器中的process()方法中實現頁面的攔截,通過interceptorCallback.onInterrupt()中斷跳轉,interceptorCallback.onContinue()繼續跳轉。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
// 選擇攔截的頁面,若跳轉時有該路徑則進行攔截提示,若沒有則直接跳轉
if (Postcard.getUri() == 'pages/transit') {
// 選擇彈框
AlertDialog.show(
{
message: '被攔截了,點擊繼續跳轉',
primaryButton: {
value: '取消',
action: () => {
// 中斷跳轉
interceptorCallback.onInterrupt(postcard)
}
},
secondaryButton: {
value: '繼續',
action: () => {
// 繼續跳轉
interceptorCallback.onContinue(postcard);
}
},
}
)
} else {
// 繼續跳轉
interceptorCallback.onContinue(postcard);
}
}
}
2.注冊攔截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除攔截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置綠色通道在跳轉前使用.setGreenChannel()方法跳過攔截(true:跳過攔截)。
Arouter.getInstance()
.build("--/--")//需要跳轉的地址
.setGreenChannel(true)
.navigation()
5.配置預處理跳轉與否預處理:實現 PretreatmentService 接口中 onPretreatment 方法,并返回一個Boolean值(true:繼續跳轉,false:不跳轉)。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
onPretreatment(postcardboolean{
return true
}
}
在跳轉前調用.setPretreatmentService() 方法,將 pretreatmentService傳入 setPretreatmentService()方法中完成預處理功能。
Arouter.getInstance()
.build(this.router)
.setPretreatmentService(pretreatmentService)
.navigationWithCallback(callback)
接口說明
Arouter

下載安裝
ohpminstall@ohos/arouteronactivityresult
源碼鏈接
https://gitee.com/openharmony-tpc/arouter-api-onActivityResult
原文標題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具
文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
-
鴻蒙
+關注
關注
59文章
2525瀏覽量
43778 -
OpenHarmony
+關注
關注
27文章
3833瀏覽量
18158
原文標題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗
開源啦!!!基于鴻蒙ArkTS封裝的圖表組件《McCharts》,大家快來一起共創
Get這個秘籍,鴻蒙原生應用頁面滑動絲滑無比
鴻蒙文件傳輸三方庫上線開源鴻蒙社區 十行代碼實現大文件高速傳輸
用于InterBase的ODBC驅動程序:可與多個第三方工具兼容

一款Cursor開源替代工具之Roo-Cline

EE-303:將VisualDSP線程安全庫與第三方RTOS配合使用

鴻蒙原生頁面高性能解決方案上線OpenHarmony社區 助力打造高性能原生應用
AKI跨語言調用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
第三方檢測機構該如何提升核心競爭力?

鴻蒙Flutter實戰:05-使用第三方插件
瑞芯微RK3566鴻蒙開發板Android11修改第三方輸入法為默認輸入法

【開源鴻蒙】使用QEMU運行OpenHarmony輕量系統

?介紹一款Java開發的開源MES系統

三維天地低代碼開發平臺助力第三方質檢行業數據可視化

評論