HarmonyOS 鸿蒙Next中调用flutter har包,如何加载没有页面的模块

HarmonyOS 鸿蒙Next中调用flutter har包,如何加载没有页面的模块 鸿蒙调用flutter har包,如何加载没有页面的模块。我目前加载的flutter,都会跳转一个空白页面

flutter代码:

@pragma('vm:entry-point')
void toSingSound() async {
//plugin初始化
  WidgetsFlutterBinding.ensureInitialized();
  MethodChannelSingSoundPlugin.initNativeFlutterChannel({});
}

在鸿蒙端如何调用


更多关于HarmonyOS 鸿蒙Next中调用flutter har包,如何加载没有页面的模块的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

开发者您好,请问当前是如何在鸿蒙端调用flutter har包的

更多关于HarmonyOS 鸿蒙Next中调用flutter har包,如何加载没有页面的模块的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS Next中调用Flutter HAR包的无页面模块,需使用动态导入机制。通过import()语法或DynamicImport接口异步加载模块,获取模块暴露的方法或类实例。加载后直接调用模块功能,无需涉及UI组件。确保Flutter模块已正确编译为HAR格式并导出非界面功能。

在HarmonyOS Next中调用Flutter HAR包的无页面模块,关键在于使用正确的入口点机制。从你的Flutter代码看,toSingSound方法已通过@pragma('vm:entry-point')标记为入口点,这允许HarmonyOS直接调用。

在HarmonyOS端,应通过Flutter引擎调用此方法,而非启动页面。使用FlutterEnginedartExecutor执行方法调用:

FlutterEngine flutterEngine = new FlutterEngine(context);
flutterEngine.getDartExecutor().executeDartEntrypoint(
    DartExecutor.DartEntrypoint.createDefault()
);
// 调用无页面方法
flutterEngine.getDartExecutor().getBinaryMessenger().send("toSingSound");

确保Flutter模块配置正确:

  1. pubspec.yaml中声明无页面模块:
flutter:
  module:
    androidPackage: null
    iosBundleIdentifier: null
  1. 避免在Flutter端使用runApp,这会导致空白页面。你的代码已正确省略了UI初始化。

如果仍出现空白页面,检查HarmonyOS端是否误用了页面导航。直接调用方法即可,无需启动Activity或Page。

回到顶部