鴻蒙Navigation入門使用

Navigation組件適用于模塊內(nèi)和跨模塊的路由切換梧疲,通過組件級路由能力實現(xiàn)更加自然流暢的轉(zhuǎn)場體驗,并提供多種標(biāo)題欄樣式來呈現(xiàn)更好的標(biāo)題和內(nèi)容聯(lián)動效果。一次開發(fā)帮毁,多端部署場景下实苞,Navigation組件能夠自動適配窗口顯示大小,在窗口較大的場景下自動切換分欄展示效果烈疚。

根頁面設(shè)置

我們在Entry的入口處Index.ets使用Navigation當(dāng)作根頁面黔牵,這里會面臨一個問題,怎么從啟動頁跳轉(zhuǎn)到首頁爷肝,并關(guān)閉啟動頁猾浦,使用首頁一直留在頁面棧中,不允許銷毀灯抛,在前面的文章《鴻蒙Navigation處理啟動頁跳轉(zhuǎn)到首頁問題》中有介紹處理方法金赦,在此不展開。在使用Navigation時对嚼,由于默認(rèn)帶有TitleBar和Toolbar夹抗,樣式不好自定義,我們直接隱藏TitleBar和Toolbar猪半,實際需要的話兔朦,可以自己實現(xiàn)。由于默認(rèn)是Auto模式磨确,以便于適配大屏設(shè)備沽甥,若我們在大屏設(shè)備上不使用分欄效果,可以強(qiáng)制設(shè)置單頁面模式乏奥。

@Entry
@ComponentV2
struct Index {
  nav: NavPathStack = new NavPathStack()

  build() {
    Navigation(this.nav)
    .mode(NavigationMode.Stack)
    .hideToolBar(true)
    .hideTitleBar(true)
    .height('100%')
    .width('100%')
  }
}

系統(tǒng)路由表配置

接下來我們需要配置系統(tǒng)路由表摆舟,在resources/base/profile目錄下新建一個json文件,例如router_map.json邓了,并在里面配置相關(guān)的路由頁面恨诱,例如我們配置一個彈窗頁面和一個登錄頁面。

{
  "routerMap": [
    {
      "name": "dialog",
      "pageSourceFile": "src/main/ets/pages/dialog/DialogPage.ets",
      "buildFunction": "dialogBuilder"
    },
    {
      "name": "login",
      "pageSourceFile": "src/main/ets/pages/login/LoginPage.ets",
      "buildFunction": "loginBuilder"
    }
  ]
}

在routerMap里面配置具體的頁面骗炉,name為頁面名稱照宝,使用push打開新頁面時,傳的name名稱就是這里定義的句葵。pageSourceFile為頁面源文件厕鹃,buildFunction為頁面入口builder,通過源文件找到這個入口builder乍丈。在module.json5文件中有一個routerMap字段剂碴,值為我們前面定義的router_map.json

實現(xiàn)子頁面

路由表字義好了后,我們需要實現(xiàn)具體的頁面轻专,這里分別實現(xiàn)一個彈窗頁面和標(biāo)準(zhǔn)頁面忆矛。彈窗示例如下,頁面模式需要設(shè)置為NavDestinationMode.DIALOG

@Builder
function dialogBuilder() {
  DialogPage()
}
@ComponentV2
export struct DialogPage {
  build() {
    NavDestination() {
      Stack() {
        Column() {
          Text('彈窗標(biāo)題')
          Text('彈窗內(nèi)容')

          Row() {
            Text('取消').layoutWeight(1)
            Text('確定').layoutWeight(1)
          }
        }
        .width('80%')
        .borderRadius(16)
        .backgroundColor($r('app.color.start_window_background'))
      }.width('100%').height('100%')
    }.hideTitleBar(true).mode(NavDestinationMode.DIALOG)
  }
}

標(biāo)準(zhǔn)登錄頁面如下请垛,默認(rèn)為標(biāo)準(zhǔn)模式催训,mode可以省略不設(shè)置

@Builder
function loginBuilder() {
  LoginPage()
}
@ComponentV2
export struct LoginPage {
  build() {
    NavDestination() {
      Column() {
        Text('賬號')
        Text('密碼')
        Text('登錄')
      }
    }
    .width('100%')
    .height('100%')
    .hideTitleBar(true)
  }
}

頁面跳轉(zhuǎn)操作

打開新頁面

使用NavPathStack的pushPath或pushPathByName可以打開一個新頁面洽议,例如打開登錄頁面則是navPathStack.pushPathByName('login', undefined),顯示一個彈窗則是navPathStack.pushPathByName('dialog', undefined)漫拭〗柿澹可以發(fā)現(xiàn)使用Navigation來實現(xiàn)彈窗還是非常簡單的,而且可以全局顯示嫂侍,不依賴于具體頁面以及Context,而且彈窗還有顯示隱藏等回調(diào)荚坞。

返回頁面

使用NavPathStack的pop方法關(guān)閉當(dāng)前頁面挑宠,回到上一個頁面,我們還可以使用popToName返回到指定的頁面颓影,也可以使用popToIndex返回到第幾個頁面各淀,甚至還可以使用clear方法直接回到首頁,使用起來還是非常方便的诡挂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碎浇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子璃俗,更是在濱河造成了極大的恐慌奴璃,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件城豁,死亡現(xiàn)場離奇詭異苟穆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)唱星,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門雳旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人间聊,你說我怎么就攤上這事攒盈。” “怎么了哎榴?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵念颈,是天一觀的道長乎澄。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么向楼? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮罚拟,結(jié)果婚禮上亿卤,老公的妹妹穿的比我還像新娘。我一直安慰自己热凹,他們只是感情好泵喘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布泪电。 她就那樣靜靜地躺著,像睡著了一般纪铺。 火紅的嫁衣襯著肌膚如雪相速。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天鲜锚,我揣著相機(jī)與錄音突诬,去河邊找鬼。 笑死芜繁,一個胖子當(dāng)著我的面吹牛旺隙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骏令,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蔬捷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榔袋?” 一聲冷哼從身側(cè)響起周拐,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凰兑,沒想到半個月后妥粟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聪黎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年罕容,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿饰。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡锦秒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喉镰,到底是詐尸還是另有隱情旅择,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布侣姆,位于F島的核電站生真,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捺宗。R本人自食惡果不足惜柱蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚜厉。 院中可真熱鬧长已,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胞四,卻和暖如春恬汁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辜伟。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工氓侧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人导狡。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓甘苍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烘豌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容