Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net

请添加图片描述

前言

随着 Flutter 3.x 全面拥抱 Wasm(WebAssembly),Dart 团队推出了全新的 package:web 来取代老旧的 dart:html
package:web 是基于最新的 JS Interop 机制构建的,它不仅性能更好,而且兼容 Wasm GC 标准。

虽然这个库通过名字看是为 “Web” 平台的,但对于 OpenHarmony 开发者来说,了解它有着特殊的意义:

  1. 混合开发:鸿蒙原生支持 ArkWeb (WebView),在 Flutter 中通过 JS互操作与 Web 页面交互是常见需求。
  2. 架构演进:理解 package:web 的设计有助于理解 Dart 如何与宿主环境(无论是 Browser 还是 Embedder)进行高效通信。

(注:本库主要用于 Flutter Web 目标平台。在鸿蒙 App 原生端,通常使用 flutter_inappwebviewjs 库进行 JS 交互。但如果你的鸿蒙应用采用了“Flutter Web 运行在鸿蒙 WebView 中”的架构,本库就是核心)。

一、核心原理

package:web 不再封装很重的 Dart 对象,而是直接将 Dart 类型映射到 JS 对象(Zero-cost interop)。

@JS() Annotation

Wasm / JS

Dart Code

JS Interop Layer

浏览器 DOM / JS Context

二、OpenHarmony 适配说明

场景一:Flutter App 编译为 HAP (原生)
此时 package:web不可用,因为底层没有 V8/SpiderMonkey 引擎环境。你应该使用 plugin 机制与 ArkTS 通信。

场景二:Flutter Web 运行在鸿蒙浏览器/WebView
此时 package:web完全可用,且是官方推荐方案。你可以用它来调用鸿蒙浏览器暴露给 JS 的特殊能力。

三、基础用例 (Web 环境)

在这里插入图片描述

3.1 操作 DOM (新一代 API)

import'package:web/web.dart'as web;voidmain(){// 💡 无需 dart:html,直接操作宿主 DOMfinal div = web.document.createElement('div')asweb.HTMLDivElement; div.innerText ='Hello from Modern Dart Web!'; div.style.backgroundColor ='blue'; web.document.body?.append(div);}
在这里插入图片描述

3.2 调用 JS 函数

// 假设 JS环境中有一个函数: function showAlert(msg) { alert(msg); }import'dart:js_interop';@JS()externalvoidshowAlert(JSString message);voidcallJs(){showAlert('HarmonyOS Web'.toJS);}
在这里插入图片描述

四、完整实战示例:鸿蒙 ArkWeb 中的 JS 互操作

本示例展示了在 Flutter Web 编译模式下,如何利用 package:web 与鸿蒙宿主环境进行高效通信。

import'dart:js_interop';import'package:web/web.dart'as web;// 💡 模拟鸿蒙系统注入的全局 JS 桥接对象@JS('OhosBridge')extension type OhosBridge._(JSObject _)implementsJSObject{externalstaticJSStringgetDeviceId();externalstaticvoidonActionSuccess(JSString data);}voidcallHarmonyOS(){// 1. 检查对象是否存在if(web.window.has('OhosBridge')){// 2. 直接获取设备 IDfinal id =OhosBridge.getDeviceId().toDart;print('✅ 获取到鸿蒙设备 ID: $id');}}
在这里插入图片描述

五、总结

package:web 是 Dart 迈向 Wasm 时代的关键一步。
虽然它主要面向 Web 平台,但在“大前端”融合的今天,鸿蒙应用中嵌入 Web 页面、小程序的情况比比皆是。掌握新一代的 JS 互操作技术,能让你在混合架构开发中游刃有余。

Read more

Flutter for OpenHarmony:web3dart 连接以太坊区块链,构建去中心化应用(DApp 开发与智能合约调用深度实战)深度解析与鸿蒙适配指南

Flutter for OpenHarmony:web3dart 连接以太坊区块链,构建去中心化应用(DApp 开发与智能合约调用深度实战)深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 随着 Web3.0 概念的普及,区块链技术已从早期的极客玩具逐渐走向主流应用。无论是 DeFi(去中心化金融)、NFT(非同质化代币)还是 DAO(去中心化组织),都离不开与区块链网络的交互。 以太坊 (Ethereum) 作为目前最成熟的智能合约平台,其客户端通信协议 JSON-RPC 是行业标准。要在移动端(Flutter/OpenHarmony)与以太坊网络通信,我们不可能手动构造那些复杂的十六进制数据包。 web3dart 是 Dart 生态中唯一的、功能完备的 Web3 客户端库。它可以让你: 1. 管理账户:生成私钥、助记词,导入 keystore。 2. 发送交易:转账 ETH,部署合约。

By Ne0inhk

机器学习模型部署:将模型转化为Web API

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。 目录 1. 安装SQLAlchemy 2. 核心概念 3. 连接数据库 4. 定义数据模型 5. 创建数据库表 6. 基本CRUD操作 7. 查询数据 8. 关系操作 9. 事务管理 10. 最佳实践 安装 bash pip install sqlalchemy 如果需要连接特定数据库,还需安装相应的驱动程序: bash # PostgreSQL pip install psycopg2-binary # MySQL pip install mysql-connector-python # SQLite (Python标准库已包含,无需额外安装) 核心概念 * Engine:数据库连接的引擎,负责与数据库通信

By Ne0inhk
Flutter 三方库 web_scraper 轻量级网页抓取核心适配进阶:精通跨端选择器表达式无头浏览器代理、极限提取残缺数据接口网格实现鸿蒙万物互联泛信息-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 web_scraper 轻量级网页抓取核心适配进阶:精通跨端选择器表达式无头浏览器代理、极限提取残缺数据接口网格实现鸿蒙万物互联泛信息-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 web_scraper 轻量级网页抓取核心适配进阶:精通跨端选择器表达式无头浏览器代理、极限提取残缺数据接口网格实现鸿蒙万物互联泛信息即时采集 前言 在 OpenHarmony 应用开发中,我们并非总能获得完美的后端 API。当我们希望在鸿蒙应用中聚合一些公开的技术资讯、天气指数或是论坛热帖,但对方并未提供标准化 JSON 接口时,通过抓取网页(Web Scraping)获取结构化数据成了唯一的出路。web_scraper 库为 Flutter 开发者提供了一套基于 CSS 选择器的极简网页爬虫方案。本文将实战介绍如何在鸿蒙端利用该库构建一个高效的信息采集底座。 一、原直线性 / 概念介绍 1.1 基础原理/概念介绍 web_scraper 的核心逻辑是基于 HTTP 内容请求与 HTML DOM 树的解析映射。

By Ne0inhk
.NET 的 WebApi 项目必要可配置项都有哪些?

.NET 的 WebApi 项目必要可配置项都有哪些?

目录 一、数据库配置 (一)选择合适的数据库提供程序 (二)配置数据库连接字符串 (三)数据库迁移(以 EF Core 为例) 二、依赖注入配置 (一)理解依赖注入 (二)注册服务 (三)使用依赖注入 三、Swagger 配置 (一)安装 Swagger 相关包 (二)配置 Swagger 服务 (三)启用 Swagger 中间件 四、接口接收和输出大小写配置 (一)接口接收大小写配置 (二)接口输出大小写配置 五、跨域配置 (一)什么是跨域 (二)配置跨域 六、身份验证与授权配置

By Ne0inhk