登录社区云,与社区用户共同成长
邀请您加入社区
RK3568开源鸿蒙显示:同一时刻只允许一路主屏。真屏只亮背光、桌面跑到HDMI,常因设备树多路显示同时okay,simple-panel永远上报connected抢占主显示。需成组开关panel、控制器、入口、路由,保持一路okay。改显示要刷p4 resource,路径用/dev/block/,并用/proc/device-tree与dri/0/summary验证。
串口日志能定位启动断点:DDR训练失败换MiniLoader,找不到boot_linux刷eMMC,16秒panic查fstab与ramdisk,58秒重启查vendor,黑屏是SuspendController超时。启动是串行管道,每阶段对应特定分区,按死亡时间对症刷镜像,勿盲目改驱动。
本项目通过一个习题练习与答题卡系统的实现,展示了 Flutter 开发中多个核心技术的综合应用:首先是组件化设计思想。项目将复杂的功能拆分为习题练习和答题卡两个独立组件,每个组件职责单一、接口清晰,既提高了代码的可维护性,也方便了后续的复用和扩展。其次是状态管理的经典实践。项目遵循状态提升原则,将共享状态提升到父组件管理,子组件通过回调与父组件通信。这种基于 setState 的状态管理方式虽然简
本项目通过实现侧滑删除与批量操作列表,展示了 Flutter 中列表交互开发的多个高级技巧:首先是组件的泛型化设计。通过泛型参数,组件可以适配任意业务数据类型,大大提高了复用性。这是 Flutter 中设计可复用组件的重要方法。其次是 Dismissible 组件的深入应用。项目不仅实现了基本的侧滑删除,还通过 confirmDismiss 回调的巧妙使用,实现了自定义删除确认逻辑和与外部数据的协
本项目通过自定义实现列表项滑动交互动效,深入展示了 Flutter 手势系统和动画系统的核心原理:首先是自定义手势交互的实现。项目使用 GestureDetector 监听水平拖动手势,实时更新偏移量,并在手势结束时自动判断展开或收起。这种对手势的精细控制是构建自定义交互组件的基础。其次是 Flutter 动画系统的应用。项目使用 AnimationController + Tween + Cur
本项目通过实现搜索与实时过滤列表功能,展示了 Flutter 开发中多个实用的技术技巧:首先是防抖机制的实现与应用。防抖是优化搜索性能的常用手段,通过 Timer 实现的防抖逻辑简洁高效,是 Flutter 开发中必须掌握的技巧之一。其次是搜索高亮的实现。使用 RichText 和 TextSpan 实现关键词高亮,虽然代码稍显繁琐,但效果直观,是搜索类功能的标配。掌握 TextSpan 的使用对
本项目实现了单值滑块和范围滑块两个可复用组件,深入展示了 Flutter 组件封装的核心技术和最佳实践。在组件设计方面,两个滑块组件都采用了一致的设计模式:外部传入配置参数,内部维护交互状态,通过回调通知数值变化。这种设计使得组件既具有良好的封装性,又保持了足够的灵活性。组件参数设计合理,提供了常用的配置选项(最小值、最大值、初始值、标签、回调),满足大多数使用场景的需求。
本项目通过 NestedScrollView 与 SliverAppBar 的组合,实现了一个具有可折叠头部效果的滚动页面。虽然代码量不大,但涉及到 Flutter 中比较高级的滚动机制,是理解 Flutter Sliver 体系的绝佳入门示例。从技术实现来看,项目展示了 Flutter Sliver 体系的强大能力。Sliver 是 Flutter 滚动系统的基石,理解 Sliver 的工作原理
本项目实现了一个功能完整、设计精美的颜色选择器组件,涵盖了颜色展示、颜色选择、颜色代码显示等核心功能。项目虽然结构简单,但涉及到了 Flutter 开发中的多个重要知识点,包括颜色处理、网格布局、状态管理、手势检测等。从技术实现来看,项目充分展示了 Flutter 声明式 UI 的优势。所有的视觉表现都由状态驱动,代码逻辑清晰直观。开发者只需要关注状态的定义和状态变化的时机,不需要手动操作 UI
随机数生成器组件继承自有状态组件,定义了三个可配置属性:最小值、最大值和生成回调。最小值和最大值定义了随机数的生成范围,默认值分别为 0 和 100。生成回调是一个可选的整型回调函数,当随机数生成完成时被调用,将生成的数值传递给父组件。这种参数化的设计使得组件具有高度的灵活性,可以通过配置不同的参数来适应各种不同的使用场景。组件自身不关心生成的数字用于什么目的,只负责生成数字并通知外部,遵循了单一
抛硬币组件继承自有状态组件,定义了一个可选的回调属性 onFlip,类型为接收字符串参数的函数。当硬币翻转完成、结果确定后,该回调函数被调用,将结果(正面或反面)传递给父组件。这种设计使得组件具有良好的封装性,外部只需监听回调即可获取结果,不需要关心内部的动画实现和状态管理。本项目实现了一个精美的抛硬币模拟器,虽然功能不算复杂,但在动画实现和视觉效果方面有许多值得深入学习的技术点。3D 变换与 M
测速组件继承自有状态组件,定义了一个可选的回调属性 onTestComplete,类型为接收字符串和双精度浮点数两个参数的函数。当测速完成后,该回调函数被调用,第一个参数传递状态(完成或失败),第二个参数传递平均速度。这种双参数的回调设计可以一次性传递多个信息,避免了需要多次回调的麻烦。父组件可以根据状态和速度来决定后续的展示和处理逻辑。本项目实现了一个功能完整、界面精美的网络测速工具模拟应用。虽
简洁高效的去重算法:利用 Dart 内置的 Set 数据结构实现去重,代码简洁,性能高效。充分利用了语言的内置能力,避免了手动实现去重逻辑的复杂性。清晰的界面布局:界面分为输入、操作、输出和说明四个区域,结构清晰,操作流程符合用户直觉。输入区和输出区采用对称设计,视觉上平衡美观。完善的用户反馈:通过 SnackBar 机制提供即时的操作反馈,用户可以清楚地知道每次操作的结果。空输入、成功去重、空复
清晰的映射表设计:使用两个 Map 存储中英文标点的对应关系,结构清晰,易于理解和扩展。映射表的设计使得转换逻辑与数据分离,新增或修改标点对只需调整映射表,不需要改动转换算法。通用转换方法:将转换逻辑抽象为通用方法,通过传入不同的映射表实现双向转换,代码复用性高。这种设计遵循了 DRY(Don’t Repeat Yourself)原则,避免了重复代码。良好的交互设计:两个转换按钮使用不同颜色区分,
第一,多种渐变创建方式。支持预设模板、自定义颜色、随机生成三种方式创建渐变色,满足不同用户的需求。第二,实时预览效果。所有调整都能立即在预览区域看到效果,所见即所得。第三,渐变方向控制。提供多种渐变方向选择,让用户可以调整渐变的角度。第四,随机生成功能。点击预览区即可生成随机渐变,既有趣味性又能激发灵感。第五,扩展方法的应用。使用 Dart 扩展方法为 Alignment 添加 flip 方法,代
本项目是一个设计精美的阅读进度悬浮球组件演示应用,虽然功能相对单一,但在交互设计和组件封装方面有很多值得学习的地方。在交互设计方面,悬浮球支持自由拖动和边界限制,点击展开详情面板的设计符合用户对悬浮按钮的常见认知。拖动时的实时位置更新和边界约束,保证了良好的用户体验。在组件设计方面,组件采用参数化设计,将颜色、尺寸、初始值等属性通过构造函数暴露给外部,提高了组件的复用性和灵活性。内部状态自包含,外
本项目是一个功能完整、界面精美的油耗计算器应用,虽然功能相对简单,但涵盖了 Flutter 开发中的多个基础知识点,非常适合初学者学习和参考。在输入处理方面,项目使用 TextEditingController 管理输入框,设置数字键盘类型,使用 tryParse 进行安全的类型转换,体现了对用户输入的严谨处理态度。在计算逻辑方面,油耗计算公式准确,防御式编程到位,对空输入、零值等边界情况都做了妥
本项目是一个设计精美、功能完整的数字时钟应用,虽然规模不大,但在技术实现上有不少亮点和值得学习的地方。在动画技术方面,项目创新性地使用 AnimationController 驱动时间更新,而非常规的 Timer 方式。这种方式与 Flutter 的绘制机制深度集成,为后续添加过渡动画效果预留了扩展空间。状态监听实现的循环机制也展示了对动画控制器的深入理解。在时间处理方面,项目展示了 DateTi
本项目是一个功能完整、界面精美的电子节拍器应用,实现了节拍器的核心功能,包括多种速度选择、多种拍号支持、脉冲动画效果和主题切换。项目在动画实现和定时控制方面有不少值得学习的技术细节。在动画技术方面,项目巧妙地结合了 Timer 和 AnimationController,用 Timer 控制节拍的时间间隔,用 AnimationController 实现每拍的脉冲视觉效果。
放大镜组件是一个有状态组件,定义了三个可选参数:图片地址、放大倍数和放大镜半径。这些参数都提供了合理的默认值,使用户可以在不传任何参数的情况下直接使用组件。图片地址默认指向 picsum.photos 的随机图片服务,尺寸为 800x600 像素放大倍数默认为 2.0 倍,即放大镜中的图像是原图的两倍大小放大镜半径默认为 100.0 逻辑像素,即放大镜直径为 200 像素这些参数被声明为final
沉浸式全屏设计:整个应用以全屏图片为核心,消除了所有不必要的界面元素,为用户提供了沉浸式的视觉体验。平滑的淡入淡出过渡:使用 Flutter 动画系统实现了专业级的图片切换效果,过渡流畅自然,视觉效果出色。丰富的交互控制:提供了播放/暂停、上一张/下一张、指示器跳转、遮罩切换等多种控制方式,用户可以完全掌控播放过程。灵活的子组件插槽:通过 child 参数支持在背景之上叠加任意内容,使组件可以作为
巧妙的切割算法:利用ClipRectFittedBox和的组合实现图片的视觉切割,不需要对图片进行实际的像素操作,性能高效,实现简洁。网格线可视化:提供网格线显示/隐藏功能,用户可以直观地看到切割位置,也可以隐藏网格线查看纯净的切割效果,灵活实用。多图片切换:内置多张不同的图片供用户切换体验,让用户可以用不同的图片来感受九宫格切割的效果。主题适配完善:所有视觉元素都支持明暗主题切换,包括背景、文字
精致的模糊揭示动画:使用和双动画协同实现了专业级的盲盒揭开效果,模糊度和透明度同步变化,视觉过渡流畅自然。多状态反馈设计:为不同的状态提供了相应的视觉反馈——未揭开时显示点击提示,揭开过程中显示加载指示器,揭开完成后显示清晰图片,用户体验完整连贯。网格布局集成:以网格形式展示多个盲盒,每个盲盒状态独立,用户可以逐个探索,营造出收集和探索的乐趣。可复用组件设计:盲盒图片封装为独立组件,提供丰富的配置
图片取色器组件继承自 StatefulWidget,这是因为它需要维护多个可变状态:图片是否加载完成、选中的颜色、HEX 代码、RGB 代码、点击位置等。组件的构造函数接收两个可选参数:宽度和高度。宽度默认值为 double.infinity,表示占满父容器的可用宽度;高度默认值为 400.0 像素。这种设计使得组件具有良好的灵活性,可以根据不同的使用场景调整尺寸。组件化设计:图片取色器被封装为独
逼真的 3D 透视效果:通过三角函数和 Matrix4 矩阵变换,在纯 2D 框架上实现了令人惊艳的 3D 透视效果,图片的大小、位置和透明度都符合真实的透视规律。流畅的手势交互:支持拖动旋转,用户可以用手指或鼠标自由控制轮播的角度,交互直观自然,响应实时流畅。丰富的可配置参数:提供了尺寸、半径、透视强度等多个可调参数,用户可以根据需要灵活调整轮播效果。精巧的算法设计:用简洁的数学计算实现了复杂的
基础配置:验证码长度、完成回调、变化回调、文本样式颜色配置:激活颜色、未激活颜色、选中颜色、错误颜色尺寸配置:输入框宽度、高度、圆角大小错误配置:是否显示错误、错误提示文本安全配置:是否密文显示重发配置:重发回调、倒计时秒数(默认60秒)完整的验证流程:涵盖了验证码输入、加载状态、成功/失败反馈、重新发送、倒计时等完整的 OTP 验证流程,功能完善。倒计时机制:使用递归 Future.delaye
组件化封装思想:项目将彩纸动画的复杂实现封装为独立的可复用组件,对外提供简洁的配置接口,体现了良好的软件工程思想。使用者无需了解底层的粒子物理模拟和绘制细节,只需传入几个简单参数即可使用。组件支持外部控制器和内部控制器两种模式,适应不同的使用场景。生命周期精细化管理:组件对控制器的创建和销毁进行了精细化管理,区分了内部创建和外部传入两种情况,避免资源泄漏和重复释放问题,展现了对 Flutter 组
条形码组件是本项目最核心的技术实现,它完全自主地完成了从数据编码到图形绘制的全过程。组件属性设计组件接收丰富的配置参数,包括:数据字符串、条码格式枚举、宽度、高度、背景色、前景色、点击回调。这些参数覆盖了条形码展示的主要定制需求,使用者可以根据业务场景灵活调整。数据和格式是必填参数,因为它们决定了条形码的内容。尺寸和颜色参数都提供了合理的默认值,降低了使用门槛。点击回调是可选参数,使得组件既可作为
按钮组组件是本项目的核心实现,提供了完整的按钮组功能。组件属性设计buttons:按钮标签列表,决定按钮的数量和显示文本selectedIndex:初始选中索引,支持外部控制选中状态onSelected:选中回调函数,点击按钮时触发width/height:按钮尺寸,控制每个按钮的大小backgroundColor/selectedColor:按钮背景色和选中色textColor/selected
本项目是一个结构清晰、功能完整的 Flutter 动画切换开关组件演示应用,展示了如何集成和使用第三方 UI 组件库,并将其封装为符合 Flutter 设计规范的可复用自定义组件。技术亮点体现在以下几个方面:第一是第三方库的集成与封装。将 animated_toggle_switch 库的复杂配置封装在组件内部,对外暴露简洁的属性接口,提高了代码的可读性和可维护性。上层使用者只需要提供初始值和变化
本项目实现了一个功能完整、设计合理的数据表格组件,代码结构清晰,易于理解和扩展,是 Flutter 自定义复杂组件的优秀学习案例。技术亮点体现在以下几个方面:第一是纯原生实现。不依赖任何第三方表格库,完全使用 Flutter 基础组件构建,代码量适中,逻辑清晰。开发者可以完全掌控每一个细节,也便于根据具体业务需求进行定制化修改。第二是灵活的列配置。每一列都可以独立设置宽度和对齐方式,满足不同类型数
本项目实现了功能完整的复选框组件,包括单个复选框和复选框组两种形式,代码结构清晰,设计规范,是 Flutter 表单组件开发的优秀参考案例。技术亮点体现在以下几个方面:第一是受控组件模式的实现。两个组件都采用了内部状态与外部属性同步的受控组件模式,既保证了交互的即时反馈,又允许父组件完全控制组件状态。这是 Flutter 表单组件的标准设计模式,也是很多初级开发者容易理解不透彻的地方。第二是组件组
React Native 做,推荐不要自己封装 Native 权限,而是统一使用:它统一封装 iOS / Android 权限申请、检查、跳转设置等流程。
龙魂·鸿蒙插件全家桶v2.0摘要 一套专为OpenHarmony设计的Flutter插件集合,包含核心通信桥接(含主权锚定/DNA追溯/三色审计)、系统能力(传感器/蓝牙/定位)、跨设备协同(分布式/文件传输)、构建工具链及定制UI组件(主权印章/三色徽章等)。所有模块采用分层架构设计,通过Dart-ETS双向通信实现,配套完整异常处理与数据验证机制,每个文件均标注功能定位,确保代码可读性与可维护
JSI = React Native 中连接 JS Runtime 和 C++ Native 世界的一层 C++ 接口。它通过让 JS 持有 C++ 对象引用,实现同步调用、零 JSON 序列化、高性能 Native 交互,是 TurboModules 和 Fabric 的底层基础。如果继续深入,可以研究JSI 源码结构(jsi.h)、Hermes Runtime、HostObject 生命周期、
React Native 在 0.76(2024 年底)把新架构设为默认,0.82(2025 年 10 月),到 2026 年新项目已经没有“要不要开新架构”的选项——只能用新的。所以讨论 RN,本质上就是在讨论新架构下的 RN。下面先把新旧架构拆清楚,再回答“新项目还推不推荐”。
在 OHPM(OpenHarmony Package Manager)生态中,三方库的版本号严格遵循规范。这套规范旨在通过版本号直观地传达代码的变更类型与兼容性。
项目中文字大小、颜色、圆角、间距、按钮尺寸、阴影等样式值分散写在各个页面,出现多处硬编码 #007DFF、fontSize (18)、padding (12),后期产品统一换肤、调整主色调需要全局逐行修改,维护成本极高。封装全局主题常量 ThemeUtil,统一管理主色 / 辅助色 / 文字色、间距、圆角、字体大小、通用阴影,支持一键切换深色 / 浅色两套主题,所有页面、组件统一引用主题变量,一键
项目列表页面普遍存在 4 种状态:加载中、空数据、网络错误、正常列表。每个页面重复编写状态判断、Loading 动画、空视图、错误重试按钮,冗余代码极多。封装一套全局通用状态兜底组件StateView,统一承载加载、空数据、网络异常、正常内容四种视图,支持自定义文案、重试回调、图片、动画,所有列表页面直接复用,大幅减少页面重复布局代码。API23 优化组件状态刷新渲染、组件销毁资源回收、动画自动释
表格级别用途生产环境控制DEBUG开发调试变量、接口返回、流程节点线上默认关闭INFO正常业务流程:登录成功、页面加载、数据刷新线上可保留WARN非致命异常:缓存失效、接口超时、空数据线上保留ERROR崩溃、数据库异常、接口报错、逻辑致命错误强制永久开启新增异步日志输出缓冲,高频打印不阻塞 UI 渲染线程;文件日志自动按大小分割,单文件到达阈值新建日志;全局日志开关全局生效,无需逐个注释 cons
HAR 是静态打包,全部代码安装时一次性装入主包,APP 体积大、冷启动慢;HSP(Harmony Shared Package)动态共享库支持运行时按需加载,将非核心业务拆分独立动态包,首页仅加载基础模块,其他功能进入对应页面时再动态拉取 / 加载,减小安装包体积、缩短启动耗时。API23 重构 HSP 动态加载上下文、页面路由跳转、资源隔离、内存释放逻辑,修复低版本 HSP 页面跳转空白、动态
单 entry 模块存放全部页面、工具、组件会导致工程臃肿、编译缓慢、多人协作代码冲突、功能无法复用。HAR 静态共享库用于拆分独立业务模块、通用基础能力库,实现代码解耦、多工程复用、分层隔离。API Version23 重构 HAR 依赖导入、资源互通、跨模块类型导出、编译缓存机制,修复低版本 HAR 资源找不到、类型导入爆红、跨模块工具循环依赖、图片 rawfile 无法访问、多 HAR 编译
2026 年 5 月 8 日,独立开发者“布布”宣布其主导的 OpenHarmony.Avalonia 项目永久归档。该项目将 .NET 的跨平台 UI 框架 Avalonia 适配到鸿蒙系统,曾在 HDC 2025 展示成果。布布称项目在与 Avalonia 和华为沟通后转为闭源并暂停公开更新,随后发现中标方案与其开源 Demo 高度一致。多家媒体报道疑似外包公司中标相关适配项目。华为尚未就此事
`` **缺点**:嵌套深、错误处理难、难以并行 ### 2. Promise ```javascript // 三种状态:pending → fulfilled / rejected(状态不可逆) const promise = new Promise((resolve, reject) => { // 异步操作 setTimeout(() => resolve('成功'), 1000);res
前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理,形成可直接用于课程设计、实训、小型商业项目的标准化架构,解决新手代码杂乱、工具类分散、状态管理混乱、资源无统一管理等问题。API23 对工程模块导入、上下文传递、文件引用路径有严格校验,不规范目录会出现编译爆红、上下文丢失、存储初始化失败等问题。本文给出固定目录结构、分层职责、
Router 路由是多页面应用导航核心模块,API Version23 重构页面栈生命周期、参数序列化、跳转异步逻辑,规范 push/replace/back/clear 四类跳转适用场景,修复低版本参数丢失、栈溢出、页面状态不刷新等核心缺陷。项目开发分层路由策略:普通详情页 push、登录切换首页 replace、退出登录 clear 清空栈、返回页面携带刷新标记实现数据重载,搭配路由工具类统一
【摘要】该项目是一个鸿蒙原子化服务,提供剪贴板翻译功能,支持HarmonyOS 3.0+/OpenHarmony 4.0+。核心功能包括:1)读取系统剪贴板内容;2)通过CNSH API进行文本翻译,返回包含DNA标识、时间戳、关键词等结构化数据;3)支持完整性验证;4)支持翻译结果回写剪贴板。项目采用模块化设计,包含主页面、服务卡片和API封装层,可作为原子化服务卡片或系统级扩展使用,通过HTT
React Native(RN)的经典架构可以理解为如果是新版 RN(Fabric + JSI),Bridge 已经逐渐被 JSI 替代,但面试中一般都会先讲经典 Bridge,再讲新架构。
本文介绍了将基于Pascal语言开发的Lazarus应用迁移至OpenHarmony平台的技术方案。核心思路是利用Qt框架的QPA平台抽象层作为桥梁,充分利用Qt对OpenHarmony的成熟适配能力,避免了直接移植GUI组件的巨大工作量,特别适合企业级MIS/ERP等复杂业务系统的跨平台迁移,具有开发成本低、生态兼容性好等优势。文中详细提供了环境配置、编译参数、项目模板集成等关键实现步骤。
"Expo Go 扫码"就是:手机装个万能容器 App,扫电脑上的二维码,把正在开发的 React Native 项目实时加载到手机上预览,修改代码后自动刷新。如何生成独立开发构建(Development Build)来绕过 Expo Go 的限制?或者如何连接 Chrome DevTools 调试 JS 代码?我可以继续为你说明。