Flutter3.22适配运行鸿蒙系统问题记录

news2025/6/1 4:22:20

Flutter3.22适配运行鸿蒙系统问题记录

  • 一:适配条件
  • 适配过程问题记录
    • (1)环境配置问题
    • (2)Concurrent modification during iteration: Instance(length:2) of'_GrowableList 报错
    • (3)三方插件寻找替换

一:适配条件

开源社区在在4月上旬发布了flutter 3.22版本的鸿蒙分支,之前的分支过于老旧,因此可以尝试把自己的项目适配运行

鸿蒙flutter分支地址:

https://gitcode.com/openharmony-sig/flutter_flutter/tree/3.22.0-ohos

已适配三方库地址:

https://gitcode.com/openharmony-sig/flutter_packages#openharmony%E5%B9%B3%E5%8F%B0%E5%B7%B2%E5%85%BC%E5%AE%B9%E5%BA%93

适配过程问题记录

(1)环境配置问题

按照文档配置环境后运行flutter doctor报ohsm sdk找不到,如果按报错去配置环境安装鸿蒙包管理器会很麻烦

直接运行

flutter config --ohos-sdk /Users/vence/Library/OpenHarmony/Sdk(这个地址是自己鸿蒙SDK的安装地址)

如果没有下载sdk在DecEco中自己配置一下
在这里插入图片描述

(2)Concurrent modification during iteration: Instance(length:2) of’_GrowableList 报错

在这里插入图片描述

此问题查阅资料后为flutter3.22分支上的问题,存在编译问题
解决方案:https://github.com/flutter/flutter/issues/148611

在这里插入图片描述

项目全局注释掉MaterialState相关的代码后编译通过。

(3)三方插件寻找替换

已适配三方库地址:

https://gitcode.com/openharmony-sig/flutter_packages#openharmony%E5%B9%B3%E5%8F%B0%E5%B7%B2%E5%85%BC%E5%AE%B9%E5%BA%93

把自己的使用到的三方库查找一遍,如果是纯dart库则不需要替换。涉及到与原生交互的三方库需要替换

以下是自己项目的三方库配置供大家参考

dependencies:
  flutter:
    sdk: flutter

  flutter_localizations:
    sdk: flutter

  # get
  get:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_get.git"

  # 权限关系
  permission_handler:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_permission_handler.git"
      path: "permission_handler"
  # 二维码扫描
  mobile_scanner:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_mobile_scanner.git"
  # # 二维码识别
  recognition_qrcode:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_recognition_qrcode.git"
  # 逆定理编码
  geolocator:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_geolocator.git"
      path: "geolocator"
  # 地理编码
  geocoding:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_geocoding.git"
      path: "geocoding"
  # 键盘状态管理
  flutter_keyboard_visibility:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_keyboard_visibility.git"
      path: "flutter_keyboard_visibility"
  # 键盘状态管理
  keyboard_actions:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_keyboard_actions.git"
  # 分享
  share_extend:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_share_extend.git"
  # toast
  fluttertoast:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_fluttertoast.git"
  # 应用安装管理
  install_plugin:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_install_plugin.git"
  # webview
  flutter_inappwebview:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_inappwebview.git"
      path: "flutter_inappwebview"
  # sp存储
  shared_preferences:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_packages.git"
      path: "packages/shared_preferences/shared_preferences"
  # webview
  webview_flutter:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_packages.git"
      path: "packages/webview_flutter/webview_flutter"
  # 图片选择
  image_picker:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_packages.git"
      path: "packages/image_picker/image_picker"
  # url管理
  url_launcher:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_packages.git"
      path: "packages/url_launcher/url_launcher"
  # 设备信息获取
  device_info_plus:
    git:
      url: "https://gitcode.com/openharmony-sig/flutter_plus_plugins.git"
      path: "packages/device_info_plus/device_info_plus"
  # 文件路径管理
  path_provider:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_packages.git"
      path: "packages/path_provider/path_provider"


  # flutter 无需适配的库
  # 日期格式
  intl: ^0.19.0
  # 网络请求
  dio: ^5.7.0
  cookie_jar: ^4.0.8
  dio_cookie_manager: ^3.1.1
  # 网络图片缓存
  cached_network_image: ^3.3.1
  photo_view: ^0.15.0
  flutter_cache_manager: ^3.1.0
  # 瀑布流
  flutter_staggered_grid_view: ^0.7.0
  # 日志输出插件
  logger: ^2.0.2+1
  # 骨架屏
  skeletonizer: ^1.1.0
  # 通知
  event_bus: ^2.0.0
  # 验证码输入框
  pin_code_fields: ^8.0.1
  # 文字轮播
  marquee: ^2.2.3
  # SVG
  flutter_svg: ^2.0.9
  #banner图
  card_swiper: ^3.0.0
  #侧滑删除
  flutter_slidable: ^3.0.0
  #动画效果
  lottie: ^3.1.0
  #可定位的listview
  scrollable_positioned_list: ^0.3.8
  #rsa加密
  encrypt: ^5.0.3
  #虚线边框
  dotted_border: ^2.1.0
  # ios 图标库
  cupertino_icons: ^1.0.2
  # loaing
  flutter_easyloading: ^3.0.0
  # 上拉刷新/下拉加载
  pull_to_refresh_plus: ^2.0.3
  # 页面适配
  flutter_screenutil: ^5.9.0
  # 图片压缩 2.4版本已经支持鸿蒙
  flutter_image_compress: ^2.4.0



# 这里是为了解决  path_provider 与 cached_network_image 库依赖冲突问题 https://leetcode.cn/discuss/post/3264240/hong-meng-fluttersheng-cheng-hapbao-bian-7utn/
dependency_overrides:
  path_provider:
    git:
      url: https://gitee.com/openharmony-sig/flutter_packages.git
      path: packages/path_provider/path_provider
  path_provider_ohos:
    git:
      url: https://gitee.com/openharmony-sig/flutter_packages.git
      path: packages/path_provider/path_provider_ohos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招Day10 - JVM - 内存管理

JVM组织架构主要有三个部分:类加载器、运行时数据区和字节码执行引擎 类加载器:负责从文件系统、网络或其他来源加载class文件,将class文件中的二进制数据加载到内存中运行时数据区:运行时的数据存放的区域,分为方法区…

Spring Boot 3.5.0中文文档上线

Spring Boot 3.5.0 中文文档翻译完成,需要的可收藏 传送门:Spring Boot 3.5.0 中文文档

Redisson学习专栏(一):快速入门及核心API实践

文章目录 前言一、Redisson简介1.1 什么是Redisson?1.2 解决了什么问题? 二、快速入门2.1 环境准备 2.2 基础配置三、核心API解析3.1 分布式锁(RLock)3.2 分布式集合3.2.1 RMap(分布式Map)3.2.2 RList&…

Pandas学习入门一

1.什么是Pandas? Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了高级数据结构和数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一。 一个强大的分析和操作大型结构化数据集所需的工具集基础是NumPy…

基于Piecewise Jerk Speed Optimizer的速度规划算法(附ROS C++/Python仿真)

目录 1 时空解耦运动规划2 PJSO速度规划原理2.1 优化变量2.2 代价函数2.3 约束条件2.4 二次规划形式 3 算法仿真3.1 ROS C仿真3.2 Python仿真 1 时空解耦运动规划 在自主移动系统的运动规划体系中,时空解耦的递进式架构因其高效性与工程可实现性被广泛采用。这一架…

游戏引擎学习第312天:跨实体手动排序

运行游戏并评估当前状况 目前排序功能基本已经正常,能够实现特定的排序要求,针对单一区域、单个房间的场景,效果基本符合预期。 不过还有一些细节需要调试。现在有些对象的缩放比例不对,导致它们看起来有些怪异,需要…

智警杯备赛--数据库管理与优化及数据库对象创建与管理

sql操作 插入数据 如果要操作数据表中的数据,首先应该确保表中存在数据。没有插入数据之前的表只是一张空表,需要使用insert语句向表中插入数据。插入数据有4种不同的方式:为所有字段插入数据、为指定字段插入数据、同时插入多条数据以及插…

MySQL 在 CentOS 7 环境下的安装教程

🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习Mysql的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…

K8S集群主机网络端口不通问题排查

一、环境: k8s: v1.23.6 docker: 20.10.14 问题和故障现象:devops主机集群主机节点到端口8082不通(网络策略已经申请,并且网络策略已经实施完毕),而且网络实施人员再次确认,网络策…

python打卡day39

知识点回顾 图像数据的格式:灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 课程代码: # 先继续之前的代码 import torch import torch.nn as nn import torch.opti…

3.8.5 利用RDD统计网站每月访问量

本项目旨在利用Spark RDD统计网站每月访问量。首先,创建名为“SparkRDDWebsiteTraffic”的Maven项目,并添加Spark和Scala的依赖。接着,编写Scala代码,通过SparkContext读取存储在HDFS上的原始数据文件,使用map和reduce…

尚硅谷redis7 49-51 redis管道之理论简介

前提redis事务和redis管道有点像,但本质上截然不同 49 redis管道之理论简介 面试题 如何优化频繁命令往返造成的性能瓶颈? redis每秒可以承受8万的写操作和接近10万次以上的读操作。每条命令都发送、处理、返回,能不能批处理一次性搞定呢…

openEuler安装MySql8(tar包模式)

操作系统版本: openEuler release 22.03 (LTS-SP4) MySql版本: 下载地址: https://dev.mysql.com/downloads/mysql/ 准备安装: 关闭防火墙: 停止防火墙 #systemctl stop firewalld.service 关闭防火墙 #systemc…

基于python,html,flask,echart,ids/ips,VMware,mysql,在线sdn防御ddos系统

详细视频:【基于python,html,flask,echart,ids/ips,VMware,mysql,在线sdn防御ddos系统-哔哩哔哩】 https://b23.tv/azUqQXe

Git:现代软件开发的基石——原理、实践与行业智慧·优雅草卓伊凡

Git:现代软件开发的基石——原理、实践与行业智慧优雅草卓伊凡 一、Git的本质与核心原理 1. 技术定义 Git是一个分布式版本控制系统(DVCS),由Linus Torvalds在2005年为管理Linux内核开发而创建。其核心是通过快照(Sna…

NLua性能对比:C#注册函数 vs 纯Lua实现

引言 在NLua开发中,我们常面临一个重要选择:将C#函数注册到Lua环境调用,还是直接在Lua中实现逻辑? 直觉告诉我们,C#作为编译型语言性能更高,但跨语言调用的开销是否会影响整体性能?本文通过基准…

【计算机网络】第2章:应用层—Web and HTTP

目录 一、Web 与 HTTP 二、总结 (一)Web 的定义与功能 (二)HTTP 协议的定义与功能 (三)HTTP 协议的核心机制 1. HTTP 请求与响应流程 2. HTTP 的连接类型 3. HTTP 的状态码 (四&#xf…

数字孪生技术赋能西门子安贝格工厂:全球智能制造标杆的数字化重构实践

在工业4.0浪潮席卷全球制造业的当下,西门子安贝格电子制造工厂(Electronic Works Amberg, EWA)凭借数字孪生技术的深度应用,构建起全球制造业数字化转型的典范。这座位于德国巴伐利亚州的“未来工厂”,通过虚实融合的数…

【图像处理基石】立体匹配的经典算法有哪些?

1. 立体匹配的经典算法有哪些? 立体匹配是计算机视觉中从双目图像中获取深度信息的关键技术,其经典算法按技术路线可分为以下几类,每类包含若干代表性方法: 1.1 基于区域的匹配算法(Local Methods) 通过…

day12 leetcode-hot100-19(矩阵2)

54. 螺旋矩阵 - 力扣(LeetCode) 1.模拟路径 思路:模拟旋转的路径 (1)设计上下左右方向控制器以及边界。比如zy1向右,zy-1向左;sx1向上,sx-1向下。上边界0,下边界hang-1&a…