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产物后,鸿蒙与Flutter交互报错的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在HarmonyOS鸿蒙Next中接入Flutter产物后,交互报错可能由以下原因引起:
- 版本兼容性问题:确保Flutter SDK和鸿蒙SDK版本兼容,推荐使用最新稳定版。
- 依赖冲突:检查Flutter与鸿蒙的依赖库是否有冲突,使用
flutter pub deps
排查。 - 桥接代码错误:确保Flutter与鸿蒙的通信桥接代码正确,包括Channel定义、方法调用等。
- 权限问题:确认应用具备必要的权限,如网络、存储等。
- 日志分析:通过
Logcat
或Flutter DevTools
查看详细错误日志,定位问题。
建议逐步排查上述问题,必要时参考官方文档或社区资源。