插件介绍

FlutterTPC Dart SDK 是一个为 HarmonyOS 平台优化的 Dart 开发工具包,它基于官方 Dart SDK 进行了自定义修改和适配,旨在为开发者提供在 HarmonyOS 上开发 Flutter 应用时所需的核心 Dart 功能和工具。

这个 SDK 包含了多个核心 Dart 包,其中最常用的包括:

  • js 包:提供 Dart 与 JavaScript 之间的互操作能力,允许开发者在 Dart 代码中调用 JavaScript API,或在 JavaScript 中调用 Dart 代码。
  • meta 包:提供元数据注解,用于标记代码的特殊用途和行为。
  • vm 包:提供与 Dart 虚拟机交互的能力。
  • dds 包:Dart Development Service,用于调试和分析 Dart 应用。
  • kernel 包:提供 Dart 核心库的内核表示。

这些包共同构成了一个完整的 Dart 开发环境,为 HarmonyOS 上的 Flutter 开发提供了坚实的基础。

如何使用插件

包的引入

由于这是一个自定义修改版本的 Dart SDK,需要通过 Git 形式引入依赖。下面以 js 包为例,介绍如何在 HarmonyOS Flutter 项目中引入该包。

在项目的 pubspec.yaml 文件中,添加以下依赖配置:

dependencies:
  js:
    git:
      url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
      path: "packages/js/js"

API 的调用

js 包的使用示例

js 包提供了 Dart 与 JavaScript 之间的互操作能力,以下是几个常见的使用场景:

调用 JavaScript 函数
()
library stringify;

import 'package:js/js.dart';

// 调用 JavaScript 的 `JSON.stringify(obj)`
('JSON.stringify')
external String stringify(Object obj);

void main() {
  var obj = {'name': 'HarmonyOS', 'version': 2.0};
  var jsonStr = stringify(obj);
  print(jsonStr); // 输出: {"name":"HarmonyOS","version":2.0}
}
使用 JavaScript 命名空间和类
('google.maps')
library maps;

import 'package:js/js.dart';

// 调用 JavaScript getter `google.maps.map`
external Map get map;

// `Map` 构造函数调用 JavaScript `new google.maps.Map(location)`
()
class Map {
  external Map(Location location);
  external Location getLocation();
}

// `Location` 构造函数调用 JavaScript `new google.maps.LatLng(...)`
('LatLng')
class Location {
  external Location(num lat, num lng);
}
向 JavaScript 传递对象字面量
()
library print_options;

import 'package:js/js.dart';

void main() {
  printOptions(Options(responsive: true));
}

()
external printOptions(Options options);

()

class Options {
  external bool get responsive;

  // 必须有一个带命名参数的无名工厂构造函数
  external factory Options({bool responsive});
}
让 Dart 函数可被 JavaScript 调用
()
library callable_function;

import 'package:js/js.dart';

/// 允许将函数赋值为可从 `window.functionName()` 调用
('functionName')
external set _functionName(void Function() f);

/// 允许从 Dart 调用已赋值的函数
()
external void functionName();

void _someDartFunction() {
  print('Hello from Dart on HarmonyOS!');
}

void main() {
  _functionName = allowInterop(_someDartFunction);
  // JavaScript 代码现在可以调用 `functionName()` 或 `window.functionName()`
}

其他常用包的基本使用

meta 包
import 'package:meta/meta.dart';


class User {
  final String name;
  final int age;

  const User(this.name, this.age);
}


void _internalMethod() {
  // 仅内部使用的方法
}
vm 包
import 'package:vm/vm.dart' as vm;

Future<void> analyzeDartCode(String dartCode) async {
  var result = await vm.compileToKernel(
    dartCode,
    vm.CompileToKernelOptions(),
  );
  // 分析编译结果
}

包的验证

为了确保引入的包能够正常工作,建议在项目中运行以下命令进行验证:

flutter pub get
flutter pub outdated
flutter pub deps

这些命令可以帮助你:

  • 获取最新的依赖
  • 检查是否有过时的依赖
  • 查看依赖树,了解包之间的依赖关系

总结

FlutterTPC Dart SDK 为 HarmonyOS 上的 Flutter 开发提供了完整的 Dart 开发环境。通过本文的介绍,你应该已经了解了:

  1. 插件介绍:FlutterTPC Dart SDK 包含多个核心 Dart 包,如 js、meta、vm 等,为 HarmonyOS 上的 Flutter 开发提供支持。

  2. 包的引入:由于是自定义修改版本,需要通过 Git 形式引入依赖,在 pubspec.yaml 中配置 Git URL 和路径。

  3. API 的调用:以 js 包为例,介绍了如何调用 JavaScript 函数、使用 JavaScript 命名空间和类、传递对象字面量以及让 Dart 函数可被 JavaScript 调用。

  4. 包的验证:使用 Flutter 命令验证引入的包是否正常工作。

通过使用 FlutterTPC Dart SDK,开发者可以在 HarmonyOS 平台上充分利用 Dart 和 Flutter 的强大功能,开发出高质量的应用程序。

注意事项

  1. 由于这是一个自定义修改版本的 SDK,请确保与官方版本的兼容性。
  2. 在使用 js 包时,请注意 Dart 和 JavaScript 之间的语义差异。
  3. 定期更新依赖,以获取最新的功能和 bug 修复。
  4. 如果在使用过程中遇到问题,可以参考官方文档或在社区寻求帮助。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐