已有flutter工程嵌入已有HarmonyOS鸿蒙Next工程

已有flutter工程嵌入已有HarmonyOS鸿蒙Next工程 将flutter项目内页面搬迁到执行flutter create -t module flutter_module创建的flutter_module项目中时, 导入页面要使用下图1中的外部库。在执行flutter pub get显示图二。需要用Dart语言版本>=3.4.1。

问一下有没有支持这个版本鸿蒙ohos构建git地址

cke_2374.png

cke_10028.png


更多关于已有flutter工程嵌入已有HarmonyOS鸿蒙Next工程的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

【解决方案】

检查引入的三方插件是纯Dart库还是依赖原生平台的库。

  • 三方插件是纯Dart库

以http_parser库为例子,可以通过降低或者提高插件的版本,使插件的Dart版本和本地项目的Dart版本匹配,插件适配的Dart版本可以在Flutter和Dart的package管理平台上查看。

  • 三方插件是依赖原生平台的库

我们需要使用已经适配HarmonyOS的三方插件,已经适配HarmonyOS的三方插件一般不会有Dart版本问题,都是使用了未适配HarmonyOS的三方插件才会报错,这时我们需要把pubspec.yaml文件中引入的三方插件改为已适配HarmonyOS的,以webview_flutter举例:

dependencies:
  flutter:
    sdk: flutter
  webview_flutter:
    git:
      url: https://gitee.com/openharmony-sig/flutter_packages.git
      path: packages/webview_flutter/webview_flutter

已适配HarmonyOS的三方插件可以在此查看OpenHarmony-SIG/flutter_packages

更多关于已有flutter工程嵌入已有HarmonyOS鸿蒙Next工程的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter module依赖了flutter_easy_search_bar,这个三方库或插件 是基于3.22.1版本(dart 3.4.1)而鸿蒙flutter3.22.0的Dart是3.4.0的,所以报错,可以找一下低版本的这个三方库或插件。

3.22.1 x64 a14f74f 2024/5/23 3.4.1
3.22.0 x64 5dcb86f 2024/5/14 3.4.0

要将已有的Flutter工程嵌入到已有的HarmonyOS鸿蒙Next工程中,可以按照以下步骤操作:

  1. 创建Flutter Module:在Flutter工程目录下运行flutter create --template=module my_flutter_module,生成Flutter模块。

  2. 配置HarmonyOS工程:在HarmonyOS工程的build.gradle中添加Flutter模块依赖:

    dependencies {
        implementation project(':my_flutter_module')
    }
    
  3. 集成Flutter引擎:在HarmonyOS的MainAbility中初始化Flutter引擎:

    FlutterEngine flutterEngine = new FlutterEngine(this);
    flutterEngine.getNavigationChannel().setInitialRoute("/");
    FlutterEngineCache.getInstance().put("my_engine_id", flutterEngine);
    
  4. 加载Flutter界面:在HarmonyOS的MainAbilitySlice中使用FlutterFragment加载Flutter界面:

    FlutterFragment flutterFragment = FlutterFragment.withCachedEngine("my_engine_id").build();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, flutterFragment).commit();
    
  5. 构建运行:确保Flutter模块和HarmonyOS工程都正确配置后,构建并运行项目。

通过这些步骤,你可以将Flutter工程成功嵌入到HarmonyOS鸿蒙Next工程中。

回到顶部