組件導航 (HMRouter)+flutter項目搭建-混合開發+分欄效果

組件導航 (Navigation)+flutter項目搭建
接上一章flutter項目的環境變量配置并運行flutter

1.flutter創建項目并運行

flutter create fluter_hmrouter

進入ohos目錄打開編輯器先自動簽名

編譯項目-生成簽名包

flutter build hap --debug

運行項目

HMRouter搭建安裝

1.安裝oh-package.json5安裝

{"dependencies": {"@hadss/hmrouter": "latest"},}

2.修改工程的hvigor/hvigor-config.json

“@hadss/hmrouter-plugin”: “latest”

在這里插入圖片描述

3.修改每個模塊的hvigorfile.ts

在這里插入圖片描述
在這里插入圖片描述

代碼如下


// ./hvigorfile.ts  工程根目錄的hvigorfile.ts
import { appTasks } from '@ohos/hvigor-ohos-plugin';export default {system: appTasks,plugins:[]
}// entry/hvigorfile.ts  entry模塊的hvigorfile.ts
import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import { hapPlugin } from '@hadss/hmrouter-plugin';export default {system: hapTasks,plugins: [hapPlugin()] // 使用HMRouter標簽的模塊均需要配置,與模塊類型保持一致
}// libHar/hvigorfile.ts  libHar模塊的hvigorfile.ts
import { harTasks } from '@ohos/hvigor-ohos-plugin';
import { harPlugin } from '@hadss/hmrouter-plugin';export default {system: harTasks,plugins:[harPlugin()]  // 使用HMRouter標簽的模塊均需要配置,與模塊類型保持一致
}// libHsp/hvigorfile.ts  libHsp模塊的hvigorfile.ts
import { hspTasks } from '@ohos/hvigor-ohos-plugin';
import { hspPlugin } from '@hadss/hmrouter-plugin';export default {system: hspTasks,plugins: [hspPlugin()]  // 使用HMRouter標簽的模塊均需要配置,與模塊類型保持一致
}

4在工程目錄下的build-profile.json5中,配置useNormalizedOHMUrl屬性為true

在這里插入圖片描述

{"app": {"products": [{"name": "default","signingConfig": "default","compatibleSdkVersion": "5.0.0(12)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"useNormalizedOHMUrl": true}}}],// ...其他配置}
}

5新建啟動頁

創建/abilitystage/MyAbilityStage.ets文件
module.json5配置啟動頁

“srcEntry”: “./ets/abilitystage/MyAbilityStage.ets”,
在這里插入圖片描述

import AbilityStage from '@ohos.app.ability.AbilityStage';
import { HMRouterMgr } from '@hadss/hmrouter';// 相當于Android的application, 在頁面創建前執行一些初始化工作
export default class MyAbilityStage extends AbilityStage {onCreate(): void {console.log('[MyAbilityStage] onCreate1')HMRouterMgr.init({context: this.context})}
}

至此配置工作結束,以下是項目中使用

在這里插入圖片描述
入口文件配置
Index.ets

import { HMDefaultGlobalAnimator, HMNavigation } from '@hadss/hmrouter';
import common from '@ohos.app.ability.common';import { AttributeUpdater } from '@kit.ArkUI';let storage = LocalStorage.getShared()class LayoutModifier extends AttributeUpdater<NavigationAttribute> {initializeModifier(instance: NavigationAttribute): void {instance.backgroundColor('#EFEFEF');instance.mode(NavigationMode.Auto);}
}@Entry(storage)
@Component
struct Index {modifier: LayoutModifier = new LayoutModifier();build() {Column() {HMNavigation({navigationId: 'mainNavigationId',homePageUrl: 'HomeContent',options: {standardAnimator: HMDefaultGlobalAnimator.STANDARD_ANIMATOR,dialogAnimator: HMDefaultGlobalAnimator.DIALOG_ANIMATOR,modifier: this.modifier}});}}}

FlutterPage.ets

import { HMRouter, HMRouterMgr } from "@hadss/hmrouter"
import { FlutterPage } from '@ohos/flutter_ohos'
import { common } from "@kit.AbilityKit";const EVENT_BACK_PRESS = 'EVENT_BACK_PRESS'@HMRouter({ pageUrl: 'FlutterContent', singleton: true})
@Component
export struct FlutterContent {@LocalStorageLink('viewId') viewId: string = "";private context = getContext(this) as common.UIAbilityContextonBackPress(): boolean {this.context.eventHub.emit(EVENT_BACK_PRESS)return true}build() {Column() {Text('首頁')Button('點擊到flutter頁面').margin({top: 20}).onClick(()=>{HMRouterMgr.push({ pageUrl: 'FlutterContent' });})FlutterPage({ viewId: this.viewId })}}
}

HomeContent.ets

import { HMNavigation, HMRouter, HMRouterMgr } from "@hadss/hmrouter";
import { AttributeUpdater } from "@kit.ArkUI";class LayoutModifier extends AttributeUpdater<NavigationAttribute> {initializeModifier(instance: NavigationAttribute): void {instance.backgroundColor('#EFEFEF');instance.mode(NavigationMode.Auto);}
}@HMRouter({ pageUrl: "HomeContent", singleton: true })
@Component
export struct split {navigationId = 'NavigationLayoutNavigationId';modifier: LayoutModifier = new LayoutModifier();build() {HMNavigation({navigationId: this.navigationId,options: {modifier: this.modifier}}) {// 左邊區域Button('點擊跳轉flutter').onClick(()=>{HMRouterMgr.push({ pageUrl: 'FlutterContent',param:{url:"https://agreement-drcn.hispace.dbankcloud.cn/index.html?lang=zh&agreementId=1655720346340328704"}});}).margin({top:20})Button('點擊跳轉其他頁面').onClick(()=>{HMRouterMgr.push({ pageUrl: 'OtherPage'});}).margin({top:20})};}
}

OtherPage.ets

import { HMRouter, HMRouterMgr } from "@hadss/hmrouter"@HMRouter({ pageUrl: 'OtherPage', singleton: true})
@Component
export struct OtherPage {build() {Column() {Text('其他頁面')}}
}

分欄效果圖如下

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81118.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

城市排水管網流量監測系統解決方案

一、方案背景 隨著工業的不斷發展和城市人口的急劇增加&#xff0c;工業廢水和城市污水的排放量也大量增加。目前&#xff0c;我國已成為世界上污水排放量大、增加速度快的國家之一。然而&#xff0c;總體而言污水處理能力較低&#xff0c;有相當部分未經處理的污水直接或間接排…

TCP/IP 知識體系

TCP/IP 知識體系 一、TCP/IP 定義 全稱&#xff1a;Transmission Control Protocol/Internet Protocol&#xff08;傳輸控制協議/網際協議&#xff09;核心概念&#xff1a; 跨網絡實現信息傳輸的協議簇&#xff08;包含 TCP、IP、FTP、SMTP、UDP 等協議&#xff09;因 TCP 和…

5G行業專網部署費用詳解:投資回報如何最大化?

隨著數字化轉型的加速&#xff0c;5G行業專網作為企業提升生產效率、保障業務安全和實現智能化管理的重要基礎設施&#xff0c;正受到越來越多行業客戶的關注。部署5G專網雖然前期投入較大&#xff0c;但通過合理規劃和技術選擇&#xff0c;能夠實現投資回報的最大化。 在5G行…

網頁工具-OTU/ASV表格物種分類匯總工具

AI輔助下開發了個工具&#xff0c;功能如下&#xff0c;分享給大家&#xff1a; 基于Shiny開發的用戶友好型網頁應用&#xff0c;專為微生物組數據分析設計。該工具能夠自動處理OTU/ASV_taxa表格&#xff08;支持XLS/XLSX/TSV/CSV格式&#xff09;&#xff0c;通過調用QIIME1&a…

【超分辨率專題】一種考量視頻編碼比特率優化能力的超分辨率基準

這是一個Benchmark&#xff0c;超分辨率視頻編碼&#xff08;2024&#xff09; 專題介紹一、研究背景二、相關工作2.1 SR的發展2.2 SR benchmark的發展 三、Benchmark細節3.1 數據集制作3.2 模型選擇3.3 編解碼器和壓縮標準選擇3.4 Benchmark pipeline3.5 質量評估和主觀評價研…

保姆教程-----安裝MySQL全過程

1.電腦從未安裝過mysql的&#xff0c;先找到mysql官網&#xff1a;MySQL :: Download MySQL Community Server 然后下載完成后&#xff0c;找到文件&#xff0c;然后雙擊打開 2. 選擇安裝的產品和功能 依次點開“MySQL Servers”、“MySQL Servers”、“MySQL Servers 5.7”、…

【React中函數組件和類組件區別】

在 React 中,函數組件和類組件是兩種構建組件的方式,它們在多個方面存在區別,以下詳細介紹: 1. 語法和定義 類組件:使用 ES6 的類(class)語法定義,繼承自 React.Component。需要通過 this.props 來訪問傳遞給組件的屬性(props),并且通常要實現 render 方法返回 JSX…

[基礎] HPOP、SGP4與SDP4軌道傳播模型深度解析與對比

HPOP、SGP4與SDP4軌道傳播模型深度解析與對比 文章目錄 HPOP、SGP4與SDP4軌道傳播模型深度解析與對比第一章 引言第二章 模型基礎理論2.1 歷史演進脈絡2.2 動力學方程統一框架 第三章 數學推導與攝動機制3.1 SGP4核心推導3.1.1 J?攝動解析解3.1.2 大氣阻力建模改進 3.2 SDP4深…

搭建運行若依微服務版本ruoyi-cloud最新教程

搭建運行若依微服務版本ruoyi-cloud 一、環境準備 JDK > 1.8MySQL > 5.7Maven > 3.0Node > 12Redis > 3 二、后端 2.1數據庫準備 在navicat上創建數據庫ry-seata、ry-config、ry-cloud運行SQL文件ry_20250425.sql、ry_config_20250224.sql、ry_seata_2021012…

Google I/O 2025 觀看攻略一鍵收藏,開啟技術探索之旅!

AIGC開放社區https://lerhk.xetlk.com/sl/1SAwVJ創業邦https://weibo.com/1649252577/PrNjioJ7XCSDNhttps://live.csdn.net/room/csdnnews/OOFSCy2g/channel/collectiondetail?sid2941619DONEWShttps://www.donews.com/live/detail/958.html鳳凰科技https://flive.ifeng.com/l…

ORACLE 11.2.0.4 數據庫磁盤空間爆滿導致GAP產生

前言 昨天晚上深夜接到客戶電話&#xff0c;反應數據庫無法正常使用&#xff0c;想進入服務器檢查時&#xff0c;登錄響應非常慢。等兩分鐘后進入服務器且通過sqlplus進入數據庫也很慢。通過檢查服務器磁盤空間發現數據庫所在區已經爆滿&#xff0c;導致數據庫在運行期間新增審…

計算機視覺---目標追蹤(Object Tracking)概覽

一、核心定義與基礎概念 1. 目標追蹤的定義 定義&#xff1a;在視頻序列或連續圖像中&#xff0c;對一個或多個感興趣目標&#xff08;如人、車輛、物體等&#xff09;的位置、運動軌跡進行持續估計的過程。核心任務&#xff1a;跨幀關聯目標&#xff0c;解決“同一目標在不同…

windows系統中下載好node無法使用npm

原因是 Windows PowerShell禁用導致的npm無法正常使用 解決方法管理員打開Windows PowerShell 輸入Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 按Y 確認就解決了

Nginx模塊配置與請求處理詳解

Nginx 作為模塊化設計的 Web 服務器,其核心功能通過不同模塊協同完成。以下是各模塊的詳細配置案例及數據流轉解析: 一、核心模塊配置案例 1. Handler 模塊(內容生成) 功能:直接生成響應內容(如靜態文件、重定向等) # 示例1:靜態文件處理(ngx_http_static_module)…

Elasticsearch 學習(一)如何在Linux 系統中下載、安裝

目錄 一、Elasticsearch 下載二、使用 yum、dnf、zypper 命令下載安裝三、使用 Docker 本地快速啟動安裝&#xff08;ESKibana&#xff09;【測試推薦】3.1 介紹3.2 下載、安裝、啟動3.3 訪問3.4 修改配置&#xff0c;支持ip訪問 官網地址&#xff1a; https://www.elastic.co/…

Java Map雙列集合深度解析:HashMap、LinkedHashMap、TreeMap底層原理與實戰應用

Java Map雙列集合深度解析&#xff1a;HashMap、LinkedHashMap、TreeMap底層原理與實戰應用 一、Map雙列集合概述 1. 核心特點 鍵值對結構&#xff1a;每個元素由鍵&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;組成。鍵唯一性&#xff1a;鍵不可重復&#…

HOW - React NextJS 的同構機制

文章目錄 一、什么是 Next.js 的同構&#xff1f;二、核心目錄結構三、關鍵函數&#xff1a;如何實現不同渲染方式&#xff1f;1. getServerSideProps —— 實現 SSR&#xff08;每次請求動態獲取數據&#xff09;2. getStaticProps getStaticPaths —— 實現 SSG&#xff08;…

SkyWalking的工作原理和搭建過程

SkyWalking 是一個開源的 應用性能監控系統&#xff08;APM&#xff09;&#xff0c;專為云原生、微服務架構設計。其核心原理基于 分布式追蹤&#xff08;Distributed Tracing&#xff09;、指標收集&#xff08;Metrics Collection&#xff09; 和 日志關聯&#xff08;Log C…

軟考 系統架構設計師系列知識點之雜項集萃(57)

接前一篇文章&#xff1a;軟考 系統架構設計師系列知識點之雜項集萃&#xff08;56&#xff09; 第93題 美國著名的卡內基梅隆大學軟件工程學研究所針對軟件工程的工程管理能力與水平進行了充分研究&#xff0c;提出了5級管理能力的模式&#xff0c;包括臨時湊合階段、簡單模仿…

Java 泛型與類型擦除:為什么解析對象時能保留泛型信息?

引言&#xff1a;泛型的“魔術”與類型擦除的困境 在 Java 中&#xff0c;泛型為開發者提供了類型安全的集合操作&#xff0c;但其背后的**類型擦除&#xff08;Type Erasure&#xff09;**機制卻常常讓人困惑。你是否遇到過這樣的場景&#xff1f; List<String> list …