HarmonyOS鸿蒙Next接入Flutter产物后,鸿蒙与Flutter交互报错

HarmonyOS鸿蒙Next接入Flutter产物后,鸿蒙与Flutter交互报错 鸿蒙接入Flutter产物,flutter产物是一个工程,该工程分别引入B,C,D类型为flutter 公共library,鸿蒙打开Flutter页面时,提示No implementation found for method actionAccounting on channel com.jzg.tg.getDate,基中com.jzg.tg.getDate为flutter工程产物中定义的channel,method actionAccounting为该flutter工程引入的B library下的一个与原生通信方法。

import { FlutterAbility, FlutterEngine } from '@ohos/flutter_ohos';
import FlutterChannelPlugin from '../plugins/FlutterChannelPlugin';
import { GeneratedPluginRegistrant } from '../plugins/GeneratedPluginRegistrant';
export default class EntryAbility extends FlutterAbility {
  configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    GeneratedPluginRegistrant.registerWith(flutterEngine)
    this.addPlugin(new FlutterChannelPlugin());
  }
  pagePath(): string {
    return "pages/IndexPage"
  }
}

JtgFlutterPage 如下:

import { FlutterPage, FlutterPlugin, Log } from '@ohos/flutter_ohos';
import FlutterEntry from '@ohos/flutter_ohos/src/main/ets/embedding/ohos/FlutterEntry';
import { FlutterView } from '@ohos/flutter_ohos/src/main/ets/view/FlutterView';
import router from '@ohos/router';
import FlutterChannelPlugin from '../plugins/FlutterChannelPlugin';

const TAG = "FlutterPage"

@Entry
@Component
struct JtgFlutterPage {
  private flutterEntry: FlutterEntry | null = null;
  private flutterView?: FlutterView
  private flutterPlugin?: FlutterPlugin

  aboutToAppear() {
    Log.d(TAG, "aboutToAppear===");
    this.flutterEntry = new FlutterEntry(getContext(this), router.getParams() as Record<string, Object>)
    this.flutterEntry.aboutToAppear()
    this.flutterView = this.flutterEntry.getFlutterView()
    this.flutterView.addFirstFrameListener(this)
  }

  onFirstFrame() {
    this.flutterPlugin = new FlutterChannelPlugin()
    this.flutterEntry?.getFlutterEngine()?.getPlugins()?.add(this.flutterPlugin)
  }

  aboutToDisappear() {
    Log.d(TAG, "aboutToDisappear===");
    this.flutterEntry?.aboutToDisappear()
    this.flutterEntry?.getFlutterEngine()?.getPlugins()?.remove(this.flutterPlugin?.getUniqueClassName())
  }

  onPageShow() {
    Log.d(TAG, "onPageShow===");
    this.flutterEntry?.onPageShow()
  }

  onPageHide() {
    Log.d(TAG, "onPageHide===");
    this.flutterEntry?.onPageHide()
  }

  build() {
    Stack() {
      FlutterPage({ viewId: this.flutterView?.getId() })
    }
  }
}

更多关于HarmonyOS鸿蒙Next接入Flutter产物后,鸿蒙与Flutter交互报错的实战教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

在HarmonyOS鸿蒙Next中接入Flutter产物后,交互报错可能由以下原因引起:

  1. 版本兼容性问题:确保Flutter SDK和鸿蒙SDK版本兼容,推荐使用最新稳定版。
  2. 依赖冲突:检查Flutter与鸿蒙的依赖库是否有冲突,使用flutter pub deps排查。
  3. 桥接代码错误:确保Flutter与鸿蒙的通信桥接代码正确,包括Channel定义、方法调用等。
  4. 权限问题:确认应用具备必要的权限,如网络、存储等。
  5. 日志分析:通过LogcatFlutter DevTools查看详细错误日志,定位问题。

建议逐步排查上述问题,必要时参考官方文档或社区资源。

回到顶部