一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具

OpenAtom OpenHarmony ? 來(lái)源:未知 ? 2023-11-24 21:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們

開(kāi)源項(xiàng)目 OpenHarmony是每個(gè)人的 OpenHarmony wKgaomVgowKABhtvAABG3jYJR5o827.jpg

孫澳

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),避免了直接依賴的問(wèn)題。使用分布式管理頁(yè)面配置,解決了集中式管理Path的問(wèn)題,整個(gè)路由跳轉(zhuǎn)過(guò)程更加透明,具有更好的擴(kuò)展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協(xié)作性和控制攔截能力,同時(shí)采用分布式管理頁(yè)面配置,提供了更好的擴(kuò)展性,目前支持SDK:OpenHarmony API Version 10版本。

效果圖

wKgaomVgowOAMnJnAFUxibk44kI804.gif ?

使用說(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ō)明

ArouterwKgaomVgowOAaJS8AABZ7zRyQvI888.png ?回調(diào)接口wKgaomVgowOAFdW9AAA0dzkOMPk424.png ?

下載安裝

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)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2620

    瀏覽量

    44043
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18602

原文標(biāo)題:【開(kāi)源三方庫(kù)】Arouter:一款輕量、高效的頁(yè)面路由工具

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    飛書(shū)富文本組件庫(kù)RichTextVista開(kāi)源

    近日,飛書(shū)正式將其自研的富文本組件庫(kù) RichTextVista(簡(jiǎn)稱(chēng)“RTV”)開(kāi)源,并上線OpenHarmony 三方庫(kù)中心倉(cāng)。該組件以領(lǐng)先的性能、流暢的渲染體驗(yàn)與高度的開(kāi)放性,為
    的頭像 發(fā)表于 07-16 16:47 ?211次閱讀

    HarmonyOS入門(mén)指南

    OpenHarmony三方庫(kù)中心倉(cāng) 堅(jiān)果派 童長(zhǎng)老倉(cāng)庫(kù)中心 鴻蒙寶典 本快速學(xué)習(xí)鴻蒙的電子書(shū) promises-book JavaScript Promise迷你書(shū)。 harmony-utils
    的頭像 發(fā)表于 06-27 00:11 ?112次閱讀

    三方工業(yè)互聯(lián)網(wǎng)平臺(tái)有哪些

    三方工業(yè)互聯(lián)網(wǎng)平臺(tái)有哪些
    的頭像 發(fā)表于 06-14 15:48 ?272次閱讀

    DialogHub上線OpenHarmony開(kāi)源社區(qū),高效開(kāi)發(fā)鴻蒙應(yīng)用彈窗

    三方庫(kù),只需要一兩個(gè)配置項(xiàng)就可以輕松解決上述問(wèn)題。 “DialogHub”可高效地解決以下3點(diǎn)問(wèn)題:1、上文提到的焦點(diǎn)、手勢(shì)、動(dòng)畫(huà)等交互問(wèn)題;2、彈窗需要與UI進(jìn)行解耦。3、彈窗需要具備復(fù)用能力
    發(fā)表于 04-03 17:30

    開(kāi)源啦!??!基于鴻蒙ArkTS封裝的圖表組件《McCharts》,大家快來(lái)起共創(chuàng)

    及時(shí)反饋 開(kāi)源代碼管理管理開(kāi)源代碼我們選擇了GitHub,比較主流,后續(xù)也會(huì)放開(kāi)其他的。而開(kāi)發(fā)完的組件我們使用的是OpenHarmony三方庫(kù)中心倉(cāng)來(lái)管理,鴻蒙目前也只支持這個(gè)中心倉(cāng)下
    發(fā)表于 03-15 15:21

    Get這個(gè)秘籍,鴻蒙原生應(yīng)用頁(yè)面滑動(dòng)絲滑無(wú)比

    Prefetcher接口監(jiān)聽(tīng)數(shù)據(jù)項(xiàng)的變化,動(dòng)態(tài)控制資源的下載與取消,并結(jié)合ImageKnife三方庫(kù)實(shí)現(xiàn)具體的預(yù)取和緩存管理。這種動(dòng)態(tài)預(yù)加載策略突破了以往解決方案的局限性,提供了種更加智能、
    發(fā)表于 03-06 14:41

    鴻蒙文件傳輸三方庫(kù)上線開(kāi)源鴻蒙社區(qū) 十行代碼實(shí)現(xiàn)大文件高速傳輸

    近日,華為在OpenHarmony社區(qū)上線了“super_fast_file_trans”文件傳輸三方庫(kù)(以下簡(jiǎn)稱(chēng)“SFFT”)。這一三方庫(kù)的推出,為開(kāi)發(fā)者提供了
    發(fā)表于 03-06 10:29

    用于InterBase的ODBC驅(qū)動(dòng)程序:可與多個(gè)第三方工具兼容

    用于 InterBase 的 ODBC 驅(qū)動(dòng)程序 Devart ODBC Driver for InterBase 是一款高性能連接工具,具有企業(yè)級(jí)功能,可在 32 位和 64 位 Windows
    的頭像 發(fā)表于 01-22 09:57 ?495次閱讀
    用于InterBase的ODBC驅(qū)動(dòng)程序:可與多個(gè)第<b class='flag-5'>三方</b><b class='flag-5'>工具</b>兼容

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

    電子發(fā)燒友網(wǎng)站提供《EE-303:將VisualDSP線程安全庫(kù)與第三方RTOS配合使用.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:09 ?0次下載
    EE-303:將VisualDSP線程安全<b class='flag-5'>庫(kù)</b>與第<b class='flag-5'>三方</b>RTOS配合使用

    鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    NEXT的原生頁(yè)面高性能解決方案,從頁(yè)面滑動(dòng)、跳轉(zhuǎn)及應(yīng)用冷啟動(dòng)等關(guān)鍵環(huán)節(jié),為開(kāi)發(fā)者提供全面的支持。目前,這些解決方案均已上線OpenHarmony開(kāi)源社區(qū),可在OpenHarmony三方
    發(fā)表于 01-02 18:00

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    跨語(yǔ)言調(diào)用,成為開(kāi)發(fā)者和廠商面臨的重要挑戰(zhàn)。為解決這痛點(diǎn),一款名為AKI (Alpha Kernel Interacting)的開(kāi)源三方庫(kù)
    發(fā)表于 01-02 17:08

    鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件

    # 鴻蒙Flutter 實(shí)戰(zhàn):使用第三方插件 在鴻蒙Flutter開(kāi)發(fā)中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,種是自己編寫(xiě)原生ArkTS代碼,在Dart側(cè)調(diào)用。另外
    發(fā)表于 10-22 21:54

    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺(jué)智能所有支持Android11系統(tǒng)的開(kāi)發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺(jué)智能的Purple Pi OH鴻蒙開(kāi)源主板,搭載了瑞芯微RK3566芯片,類(lèi)樹(shù)莓派設(shè)計(jì),是Laval官方社區(qū)主薦的一款鴻蒙開(kāi)發(fā)
    的頭像 發(fā)表于 09-24 09:43 ?1106次閱讀
    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第<b class='flag-5'>三方</b>輸入法為默認(rèn)輸入法

    開(kāi)源鴻蒙】使用QEMU運(yùn)行OpenHarmony系統(tǒng)

    本文將會(huì)介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運(yùn)行OpenHarmony系統(tǒng)。通過(guò)本文,你將會(huì)對(duì)QEMU和OpenHarmony系統(tǒng)又
    的頭像 發(fā)表于 09-14 08:51 ?1349次閱讀
    【<b class='flag-5'>開(kāi)源</b>鴻蒙】使用QEMU運(yùn)行OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b>系統(tǒng)

    ?介紹一款Java開(kāi)發(fā)的開(kāi)源MES系統(tǒng)

    ?介紹一款Java開(kāi)發(fā)的開(kāi)源MES系統(tǒng),萬(wàn)界星空科技開(kāi)源的MES系統(tǒng)。該系統(tǒng)基于Java開(kāi)發(fā),具有廣泛的適用性和高度的可定制性,能夠滿足不同行業(yè)、不同規(guī)模企業(yè)的智能制造需求。
    的頭像 發(fā)表于 09-05 17:39 ?1401次閱讀
    ?介紹<b class='flag-5'>一款</b>Java開(kāi)發(fā)的<b class='flag-5'>開(kāi)源</b>MES系統(tǒng)