- 博客(192)
- 资源 (9)
- 问答 (2)
- 收藏
- 关注
原创 HarmonyOS 6.0 服务卡片实战:把「轻食刻」装进桌面,让轻断食一眼可控
本文基于HarmonyOS 6.0 ArkTS开发框架,结合轻食刻健康管理应用的服务卡片Form Kit开发实践,详细解析了formProvider.openFormManager等核心API在实际项目中的应用。通过具体代码示例和架构设计,展示了如何将复杂的健康数据以简洁直观的方式呈现在用户桌面上
2025-11-13 23:08:39
50756
9
原创 Flutter调用HarmonyOS NEXT原生相机拍摄&相册选择照片视频
Flutter调用HarmonyOS NEXT原生方法,到相机相册选择照片视频,相机拍摄图片视频实践
2025-01-21 16:13:00
2953
原创 Flutter艺术探索-StatelessWidget与StatefulWidget区别与使用场景
和是FlutterUI大厦的两块基石。它们的根本区别在于是否管理自身可变的状态。掌握这个核心,你就能做出正确的选择。尽可能让组件无状态化。把状态往上提,让UI组件保持轻量和纯粹。遵循这个思路,不仅能写出性能更好的代码,也会让你后续引入ProviderRiverpod等状态管理框架时更加顺畅。从理解这两个基础组件开始,你的Flutter开发之路会走得更稳、更远。
2026-03-06 12:24:32
424
原创 Flutter艺术探索-Flutter Widget核心概念深度解析
Flutter 的 Widget 系统,以其声明式和不可变的设计,为我们提供了一套强大且高效的 UI 开发范式。从原理层面理解更新机制:明白 Widget、Element、RenderObject 三棵树如何协作,是写出高性能代码的基础。掌握状态管理的生命周期:知道在initStatedispose等时机该做什么,能构建更稳定、无泄漏的应用。养成性能优化习惯:主动使用const、合理拆分 Widget、在列表中使用Key和Builder,这些习惯能让你的应用更流畅。拥抱声明式思维。
2026-03-06 10:32:34
414
原创 Flutter艺术探索-Dart语言基础语法快速入门
到这里,你应该对 Dart 的核心语法、设计思想和如何在 Flutter 中使用有了基本的认识。我们通过一个实际例子,把空安全、异步、混入和界面构建串了起来。核心要点回顾空安全:养成声明可空类型的习惯,让编译器帮你提前发现 null 错误。异步编程:掌握Futureasyncawait,这是处理网络、IO 的必备技能。混入机制:在继承之外,用mixin实现更灵活的代码复用。与 Flutter 结合:Dart 代码最终是为了构建 Widget,通过等把数据和界面连接起来。接下来可以学什么。
2026-03-06 10:19:53
449
原创 Flutter艺术探索-Flutter环境搭建与项目创建详解
在移动应用开发领域,跨平台开发一直是提升效率的热门方向。Google推出的Flutter,凭借其高性能的渲染引擎和一致的开发体验,已经吸引了大量开发者的目光。它不仅支持iOS和Android两大移动平台,还能轻松扩展到Web、桌面及嵌入式设备,真正实现了“一次编写,多端运行”的理想。如果你正打算学习Flutter,或者希望系统地掌握其环境搭建与项目创建,那么这篇文章正是为你准备的。我们从最基础的环境配置讲起,深入底层架构的设计思想,最后通过一个完整的实战项目串联所有知识点。
2026-03-05 15:39:54
455
原创 Flutter艺术探索-Flutter插件开发:自定义Plugin实战指南
开发一个Flutter插件,从设计Dart API到实现双端原生代码,听起来步骤不少,但一旦理解了Platform Channel这个核心机制,并将其视为一种标准的“通信协议”,整个流程就会清晰很多。希望这个从零开始的电池插件实战,能帮你打通Flutter插件开发的任督二脉。掌握了这项技能,你就能让Flutter应用真正拥有调用一切原生能力的“超能力”,在跨平台开发中更加游刃有余。
2026-03-05 15:24:26
554
原创 Flutter艺术探索-Flutter包体积优化:代码分割与资源压缩
Flutter应用的包体积优化是一个系统工程,需要从分析、分割、压缩多个层面协同作战。懒加载:非必要的,等要用的时候再下载。精打细算:必要的资源,用最精简的方式提供。从今天介绍的代码分割和资源压缩入手,坚持在每次发版前查看包体积报告,你会发现让应用“瘦”下来,并没有想象中那么难。
2026-02-03 13:58:40
783
原创 Flutter艺术探索-Flutter自动化测试:集成测试与Widget测试
如今,Flutter凭借其出色的跨平台能力和高效的开发流程,已经成为移动应用开发的主流选择之一。但随着应用功能变得越来越复杂,团队规模增长,如何保证代码质量和应用稳定就成了一项实实在在的挑战。这时候,自动化测试就不再是“可有可无”的选项,而是保障项目健康迭代的核心手段。做好Flutter测试,不仅能帮我们在早期揪出潜在的Bug,更能为我们后续重构代码提供坚实的安全网,让我们有底气去优化代码结构。通过建立系统化的测试策略,团队可以大幅减少重复的手工回归测试工作,提升持续集成的效率,最终加快产品交付的速度。
2026-02-03 12:19:24
656
原创 Flutter艺术探索-Flutter CI/CD配置:GitHub Actions自动化部署
走到这里,你已经掌握了使用 GitHub Actions 为 Flutter 项目搭建自动化部署管道的核心方法。从代码提交触发,到质量检查、多平台构建,再到最终部署,整个过程完全自动化,这能把你和团队从重复劳动中解放出来。关键是,这套流程不是一成不变的。你可以从本文提供的配置出发,根据自己项目的实际需求进行调整:也许你需要接入 Firebase App Distribution,也许需要自动生成更新日志。随着项目的成长,持续优化你的 CI/CD 流水线,让它成为团队交付高质量应用的坚实后盾。
2026-02-03 10:19:04
937
1
原创 Flutter艺术探索-Flutter Shader编程:着色器与特效实现
Flutter的Shader编程把高级图形开发的能力带进了UI框架的层面。原理:基于GPU渲染管线,Flutter通过SkSL/GLSL支持片段着色器,实现了像素级的精细控制。流程:从写.frag文件、配置资源,到异步加载,再到里创建、设置uniform并画到屏幕上。实践:我们从静态色块走到动态的噪波渐变,看到了用Shader实现动态效果既高效又优雅。优化:缓存程序、精确重绘、选对精度等等,都是保证Shader应用流畅运行的关键。
2026-02-02 17:54:22
1102
原创 Flutter艺术探索-Flutter渲染管道:RenderObject与Layer深度解析
你可以把Layer理解为一个承载绘制结果(Picture)的容器。RenderObject在绘制时,最终会把绘图指令输出到某个Layer上。Flutter引擎则负责将这些平台无关的Layer树,高效地转化为OpenGL或Metal等图形API的指令,利用GPU进行硬件加速合成。RenderObject树(执行paint方法)↓生成或更新Layer树(包含图片、变换、裁剪等信息)↓提交给Flutter Engine↓Engine将Layer树合成并光栅化为最终的纹理↓提交给GPU显示到屏幕。
2026-02-02 16:13:33
914
原创 Flutter艺术探索-Flutter自定义Widget:从零开始创建组件
从实际需求切入,明确了组件要做什么、长什么样。回头补了点原理,理解了Flutter的渲染模型,选了最合适的实现路子(继承动手敲出代码,实现了一个有状态、有交互、可配置的。放到真实场景验证,学会了在列表中管理它的状态。最后琢磨了优化点,思考了如何让它性能更好、更可靠。现在这个已经是个能直接用到项目里的靠谱组件了。把简单的iconEmoji升级成支持SVG或Lottie动画的组件。加入温度单位切换(摄氏/华氏)的功能。用provider或riverpod等状态管理方案,让。
2026-02-02 14:31:26
1131
原创 Flutter艺术探索-Flutter自定义渲染:CustomPainter绘制指南
Paint对象决定了你画出来的是什么样子。..color = Colors.blueAccent // 颜色..style = PaintingStyle.fill // 样式:fill填充,stroke描边..strokeWidth = 4.0 // 描边宽度..isAntiAlias = true // 开启抗锯齿,让边缘更平滑..strokeCap = StrokeCap.round // 线条末端样式:圆头。
2026-02-02 12:23:26
756
原创 Flutter艺术探索-Flutter三方库鸿蒙适配实战:从原理到实践
鸿蒙操作系统发展势头很猛,市场份额也在快速扩大。越来越多的开发者开始面临一个新任务:把现有的 Flutter 应用迁移到鸿蒙平台。根据华为官方数据,截至 2024 年,鸿蒙生态设备数量已经超过了 8 亿台,覆盖了手机、平板、智能穿戴、汽车座舱等各种设备。Flutter 作为谷歌主推的跨平台 UI 框架,其“一次编写,到处运行”的承诺深入人心,但这主要针对的是 Android 和 iOS。
2026-02-02 10:21:45
383
原创 Flutter艺术探索-Flutter在鸿蒙端运行原理:OpenHarmony平台集成
通过定制化的Embedder层,Flutter成功地在OpenHarmony上“安家落户”。这套方案本质上是在两个优秀的系统之间搭建了一座高效的数据桥梁,让Flutter的自绘引擎能驱动鸿蒙的屏幕,也让Dart代码能调用鸿蒙的分布式能力。回顾一下核心技术点桥梁是Embedder:它负责处理原生窗口、输入事件和平台通信,是适配工作的核心。渲染两条路:追求极致性能用直接渲染,保证广泛兼容用纹理混合。通信靠Channel。
2026-02-01 17:41:50
1102
原创 Flutter艺术探索-Flutter跨平台适配:Android/iOS/Web差异化处理
Flutter的跨平台优势不在于隐藏差异,而在于为我们提供了一套优雅处理差异的工具链。成功的适配策略是分层的:从利用Theme和自适应组件处理基础UI,到通过集成深度原生功能,再到为Web量身打造交互体验。核心思想是“关注点分离”:将平台无关的业务逻辑与平台相关的实现细节分开。这样,我们既能享受到代码复用的高效率,又能为每个平台的用户交付最符合他们预期的高质量体验。记住,最终目标不是让应用“看起来一样”,而是让它在每个平台上都“感觉原生”。
2026-02-01 15:32:41
719
原创 Flutter艺术探索-Flutter推送通知:local_notifications与firebase_messaging
通过上面的步骤,我们搭建了一个结合和的Flutter推送体系。前者作为可靠的云端入口,后者提供一致且可控的本地展示,这种组合在实践中非常有效。记住,推送通知是把双刃剑。用得好,它是激活用户、传递价值的利器;用不好,频繁打扰或推送无关内容,用户会毫不犹豫地关闭权限甚至卸载应用。始终从用户的角度出发,提供有意义、有温度的通知,才是长久之道。希望这篇结合实践的文章能帮你避开一些坑,更顺畅地实现Flutter的推送功能。如果在实践中遇到新问题,欢迎分享和讨论。
2026-02-01 10:02:33
1130
原创 Flutter艺术探索-Flutter地图与定位:google_maps_flutter与geolocator
,''';与geolocator的组合为Flutter开发者提供了一套强大且易用的地图定位解决方案。从基本的显示地图、获取位置,到高级的轨迹记录、地理编码,这两个插件都能很好地覆盖。实际开发中,建议根据具体场景调整定位精度和更新频率,在功能与功耗之间找到平衡。如果遇到权限问题或地图不显示,请逐一检查API密钥配置和平台权限设置——这两步往往是初学者最容易出错的地方。希望这篇指南能帮你顺利实现Flutter中的地图与定位功能。如果有任何问题或更优的实现方式,欢迎在评论区交流讨论。
2026-02-01 08:13:54
679
原创 Flutter艺术探索-Flutter相机与相册:camera库与image_picker集成
通过camera和这两个插件的组合,Flutter 开发者可以相对轻松地构建出功能强大、体验良好的多媒体功能。本文提供的代码是一个坚实的起点,你可以在此基础上,根据产品需求添加更多特性,如滤镜、人脸贴纸、视频剪辑等。希望这篇指南能帮助你少走弯路。如果在实践过程中遇到问题,不妨多查阅插件的官方文档和 GitHub Issue 列表,那里通常有来自社区的丰富解决方案。
2026-02-01 08:02:07
999
原创 Flutter艺术探索-Flutter插件开发:自定义Plugin实战指南
用Flutter做跨平台开发,“写一次代码,两端都能用”的效率确实很吸引人。但当我们想调用摄像头、读取传感器数据、连接蓝牙或者访问本地文件时,就会发现Flutter框架本身并不能直接和手机硬件打交道。这时候,就需要来扮演“翻译官”的角色,在Dart代码和原生平台(Android/iOS)之间架起沟通的桥梁。今天,我们就通过创建一个,把Flutter插件开发的全过程走一遍。从设计思路、编写代码、性能调优到最终发布,每个环节都会讲到。
2026-01-29 16:35:49
510
原创 Flutter艺术探索-PlatformView嵌入:在Flutter中显示原生View
无论是需要高性能渲染的地图(如 Google Maps、百度地图)、功能复杂的视频播放器,还是平台特定的 UI 控件(比如 Android 的 WebView 或 iOS 的 ARKit),有时候纯 Flutter Widget 确实力不从心。这时,PlatformView 技术就成了我们的“救命稻草”。它允许 Flutter 应用直接嵌入 Android 的View或 iOS 的UIView,实现真正的混合渲染。这不仅能极大扩展 Flutter 的能力边界,也让我们在面对复杂场景时多了一个灵活的选择。
2026-01-29 15:08:04
649
原创 Flutter艺术探索-EventChannel使用:原生事件流与Flutter交互
在Flutter开发中,与原生平台(Android/iOS)打交道几乎是不可避免的——毕竟有些功能,比如传感器数据、蓝牙通信或者持续的地理位置更新,仍然离不开平台本身的能力。虽然Flutter提供了丰富的跨平台UI组件,但在这些特定场景下,我们还是得借助原生的力量。为此,Flutter提供了三种核心的通信机制,也就是我们常说的今天我们要重点聊的,就是其中专门处理的。它和MethodChannel那种“一问一答”的模式不同,EventChannel建立的是一个持久的、单向的通道。
2026-01-29 13:18:44
606
原创 Flutter艺术探索-MethodChannel原理:Flutter与原生通信机制
MethodChannel 作为 Flutter 与原生平台通信的基石,其设计巧妙地平衡了易用性、性能与类型安全。它工作可靠:清晰的分层与异步设计,确保了 UI 的流畅性。它足够灵活:支持从简单值到复杂嵌套结构的各种数据类型。它要求严谨:需要开发者注意线程管理、错误处理和两端的一致约定。对于绝大多数需要原生能力的场景,MethodChannel 都是首选且官方的解决方案。
2026-01-29 11:33:50
666
原创 Flutter艺术探索-Flutter性能分析工具:Flutter DevTools深度使用
在移动应用开发中,性能的好坏直接关系到用户体验的成败。你的Flutter应用可能会运行在各种不同的设备上,从低端安卓机到最新的iPhone,确保它在每一台设备上都流畅顺滑,是个不小的挑战。我们常常靠“感觉”来判断应用卡不卡,但感觉往往不靠谱——一次偶发的卡顿如何复现?内存为何在默默增长?某个页面滑动起来总觉得不跟手,问题到底出在哪里?这时候,你需要的不再是猜测,而是数据。Flutter DevTools正是为此而生的官方工具套件。
2026-01-29 10:15:36
640
原创 Flutter艺术探索-Flutter内存管理:内存泄漏检测与优化
// 一个简单的内存监视器Timer?_timer;_timer?.cancel();});if (kDebugMode) print('内存监控已启动');_timer?.cancel();// 这里可以调用平台通道获取更精确的内存使用量// 简单演示:假设获取到了内存使用率print('⚠️ 警告:内存使用率偏高 (${usagePercent.toStringAsFixed(1)}%)');// 实际项目中,需要通过 method channel 调用原生API。
2026-01-28 17:11:15
541
原创 Flutter艺术探索-Flutter渲染优化:Widget生命周期与性能分析
✅多用const:对于静态的Widget,const能避免不必要的重建。✅拆分解耦:别把所有东西都塞在一个build方法里,拆成小Widget。✅善用Key:在列表或动态生成Widget时,Key能帮助Flutter准确复用。✅build方法要纯:不要在build里创建新对象或执行复杂逻辑,移到外面去。✅缓存计算结果:特别是那些耗时的操作,算一次存起来。✅关注点分离:构建UI、业务逻辑、状态管理,尽量分开处理。Flutter的性能优化不是几个奇技淫巧,而是一个需要系统化理解的过程。
2026-01-28 15:37:18
525
原创 Flutter艺术探索-设计模式在Flutter中的应用:单例、工厂、观察者
单例模式是管理全局资源的利器,Dart用factory和static就能优雅实现,但要注意它对可测试性的影响。工厂模式与Flutter动态构建UI的需求天作之合,它能让你干净利落地封装对象创建逻辑。观察者模式是Flutter响应式编程的核心,从setState到provider,都在用它同步数据和UI。最后想说的是,设计模式是为你服务的工具,而不是必须遵守的教条。千万别为了用模式而用模式。
2026-01-28 13:37:20
699
原创 Flutter艺术探索-Repository模式:数据层抽象与复用
数据层的基础是模型。我们定义一个Product类,并实现序列化方法。// 从 JSON 映射?'',?'',?'',?0.0,?'',?// 转换为 JSONreturn {'id': id,// 方便创建更新后的副本String?id,String?double??this.id,
2026-01-28 10:09:08
660
原创 Flutter艺术探索-Clean Architecture:整洁架构在Flutter中的应用
领域层是架构的心脏,我们先从这里开始。采用Clean Architecture构建Flutter应用,初期的确需要更多思考和设计。但从长远来看,这种投资是值得的——它为你的应用带来了清晰的结构、可独立测试的核心逻辑,以及应对未来变化的强大韧性。本文展示的只是一个起点。在实际项目中,你可能会遇到更复杂的场景,比如身份验证流、实时数据同步、复杂的领域事件等。但万变不离其宗,只要坚守“依赖向内、关注点分离”的原则,你就能在整洁架构的基础上,构建出稳定、可扩展的Flutter应用。希望这篇指南能为你铺平道路。
2026-01-27 23:52:12
562
原创 Flutter艺术探索-MVVM架构设计:Flutter项目架构最佳实践
通过上面的实践,我们可以看到MVVM不仅仅是一种模式,它更是一种让Flutter项目保持健康的工程实践。它强制进行了关注点分离,让代码自然而然变得更容易测试、维护和协作。
2026-01-27 17:48:22
494
原创 Flutter艺术探索-Flutter列表性能优化:ListView.builder与itemExtent
Widget 层面:尽可能使用const构造函数,减少不必要的重建。布局层面:使用itemExtent提供固定高度,避免过于深层的嵌套布局。状态管理:对需要保持状态的项使用。渲染控制:通过添加重绘边界,减少渲染范围。内存管理:确保每个项有唯一的 Key,促进 Element 的正确复用。列表性能优化没有银弹,但理解了的懒加载机制,并善用itemExtent等属性,你已经能解决大部分常见的卡顿问题了。希望这篇文章能帮你构建出更流畅的 Flutter 应用。
2026-01-27 16:21:36
592
原创 Flutter艺术探索-Flutter性能优化:避免不必要的Widget重建
避免不必要的重建,本质是尊重Flutter的框架设计,帮助它更高效地工作。拆解与恒定:大组件拆小组件,静态部分标const。这是最基础也最有效的两步。状态监听要吝啬:只监听你需要的数据,用SelectorConsumer等工具实现精准更新。build方法要纯粹build方法里只做UI描述,别在这里做网络请求、复杂计算或文件读写。这些应该放在initStateFuture或compute中。Key要用在刀刃上:理解Key的语义,在列表、动画等需要保持状态的动态场景中正确使用。工具是最好的朋友。
2026-01-27 14:45:52
652
原创 Flutter艺术探索-Flutter复杂动画:AnimatedBuilder与Staggered动画
设想一个场景:你想让一个自定义绘制的图形或者一个复杂的Transform动起来。如果直接用setState配合的value来驱动,每次动画值变化都会调用setState,导致整个 Widget 树重建,即使大部分子 Widget 根本没变。AnimatedBuilder 的巧妙之处在于它采用了观察者模式。它只监听动画值的变化,并且只重建其builder方法返回的那部分 UI,而将静态的子 Widget 通过child参数缓存起来,避免重复创建。// 传统 setState 方式:低效。
2026-01-27 14:34:01
656
原创 Flutter video_thumbnail库在鸿蒙(OpenHarmony)端的完整适配实践
通过引入 FFmpeg 作为核心解码引擎,我们成功实现了插件在鸿蒙平台的功能适配。整个过程主要分为几步:分析鸿蒙媒体能力缺口、交叉编译并集成 FFmpeg、实现 C++ 解码逻辑并通过 NAPI 暴露接口、封装 ArkTS 桥接层、最后对接 Flutter Platform Channel。这次实践不仅解决了在鸿蒙上的使用问题,也为其他依赖复杂原生多媒体能力的 Flutter 插件(比如视频编辑、音频处理等)提供了可参考的适配路径。
2026-01-27 14:32:00
670
原创 Flutter艺术探索-Hero动画与页面转场:流畅的视觉体验
如果你觉得默认的直线运动有些单调,完全可以自定义飞行轨迹和曲线。Hero(// 自定义矩形插值器,实现弹性效果end) {},// 一个简单的弹性插值器实现> {@overrideRect?// 对t应用弹性曲线函数.left, end!.top, end!// 这是一个简化的弹性函数,可根据需要调整。
2026-01-26 15:49:42
590
原创 Flutter艺术探索-Flutter动画进阶:AnimationController与Tween
有时候内置的Tween不够用,比如你想动画化一个。// 自定义一个 BorderRadius 的 Tweenend})@override// 使用起来和内置 Tween 一样和Tween是 Flutter 动画的基石。Controller是引擎,驱动着0到1的进度;Tween是翻译,把这个进度转换成你想要的各种值(大小、颜色、位置等)。理解Animation作为“可监听值容器”的角色。掌握的生命周期管理(初始化、播放、释放)。熟练使用Tween(包括内置的ColorTween。
2026-01-26 14:00:36
587
原创 Flutter艺术探索-Flutter数据验证:built_value与验证规则
这里是核心所在。我们通过在工厂构造函数中插入验证逻辑,来保证数据的纯洁性。String?get phone;User._();updates?// 1. 字段级基础验证throw ValidationException('name', '姓名不能为空');// 2. 跨字段业务规则验证(示例)?0) < 21) {throw ValidationException('age', '使用高校邮箱需年满21岁');// 3. 构建对象。
2026-01-26 12:14:14
685
原创 Flutter艺术探索-Freezed代码生成:不可变数据模型实战
在Flutter应用开发中,状态管理一直是个绕不开的核心话题。尤其当应用逐渐复杂、功能越来越多时,如何清晰、安全地管理数据模型就变得格外重要。这时,不可变数据模型(Immutable Data Models) 作为一种优秀的设计范式,开始受到越来越多开发者的青睐。简单来说,不可变数据模型的核心原则是:对象一旦创建,其状态就不能再被修改。这听起来可能有些限制,但在实际开发中,它带来的好处远远超过了这点不便。不过,在Dart中手动实现一个功能完善的不可变类,意味着要编写大量的样板代码:字段、和重写、方法……这无
2026-01-26 10:45:51
853
Ollama-darwin Windows版
2025-02-19
Ollama安装包Mac版
2025-02-19
Android压缩图片到100K以下并保持不失真的高效方法
2015-07-14
viewpager标题间距太大如何设置
2015-01-04
android虚拟器不乱码真机测试乱码
2014-12-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅