<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nanxuan521的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/nanxuan521</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nanxuan521]]></copyright><item><title><![CDATA[Agent Plan：从“模型订阅“到“Agent能力订阅“，火山引擎如何重新定义AI Agent开发范式]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/161630720</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/161630720</guid><author>nanxuan521</author><pubDate>Wed, 03 Jun 2026 09:57:47 +0800</pubDate><description><![CDATA[火山方舟 Agent Plan 超全模态模型 × Harness 升级，升级解锁 ArkClaw，最新支持 DeepSeek-V4 系列与 GLM-5.1]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-StatelessWidget与StatefulWidget区别与使用场景]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/158734201</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/158734201</guid><author>nanxuan521</author><pubDate>Fri, 06 Mar 2026 12:24:32 +0800</pubDate><description><![CDATA[和是FlutterUI大厦的两块基石。它们的根本区别在于是否管理自身可变的状态。掌握这个核心，你就能做出正确的选择。尽可能让组件无状态化。把状态往上提，让UI组件保持轻量和纯粹。遵循这个思路，不仅能写出性能更好的代码，也会让你后续引入ProviderRiverpod等状态管理框架时更加顺畅。从理解这两个基础组件开始，你的Flutter开发之路会走得更稳、更远。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter Widget核心概念深度解析]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/158731684</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/158731684</guid><author>nanxuan521</author><pubDate>Fri, 06 Mar 2026 10:32:34 +0800</pubDate><description><![CDATA[Flutter 的 Widget 系统，以其声明式和不可变的设计，为我们提供了一套强大且高效的 UI 开发范式。从原理层面理解更新机制：明白 Widget、Element、RenderObject 三棵树如何协作，是写出高性能代码的基础。掌握状态管理的生命周期：知道在initStatedispose等时机该做什么，能构建更稳定、无泄漏的应用。养成性能优化习惯：主动使用const、合理拆分 Widget、在列表中使用Key和Builder，这些习惯能让你的应用更流畅。拥抱声明式思维。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Dart语言基础语法快速入门]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/158731345</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/158731345</guid><author>nanxuan521</author><pubDate>Fri, 06 Mar 2026 10:19:53 +0800</pubDate><description><![CDATA[到这里，你应该对 Dart 的核心语法、设计思想和如何在 Flutter 中使用有了基本的认识。我们通过一个实际例子，把空安全、异步、混入和界面构建串了起来。核心要点回顾空安全：养成声明可空类型的习惯，让编译器帮你提前发现 null 错误。异步编程：掌握Futureasyncawait，这是处理网络、IO 的必备技能。混入机制：在继承之外，用mixin实现更灵活的代码复用。与 Flutter 结合：Dart 代码最终是为了构建 Widget，通过等把数据和界面连接起来。接下来可以学什么。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter环境搭建与项目创建详解]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/158697891</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/158697891</guid><author>nanxuan521</author><pubDate>Thu, 05 Mar 2026 15:39:54 +0800</pubDate><description><![CDATA[在移动应用开发领域，跨平台开发一直是提升效率的热门方向。Google推出的Flutter，凭借其高性能的渲染引擎和一致的开发体验，已经吸引了大量开发者的目光。它不仅支持iOS和Android两大移动平台，还能轻松扩展到Web、桌面及嵌入式设备，真正实现了“一次编写，多端运行”的理想。如果你正打算学习Flutter，或者希望系统地掌握其环境搭建与项目创建，那么这篇文章正是为你准备的。我们从最基础的环境配置讲起，深入底层架构的设计思想，最后通过一个完整的实战项目串联所有知识点。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter插件开发：自定义Plugin实战指南]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/158697402</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/158697402</guid><author>nanxuan521</author><pubDate>Thu, 05 Mar 2026 15:24:26 +0800</pubDate><description><![CDATA[开发一个Flutter插件，从设计Dart API到实现双端原生代码，听起来步骤不少，但一旦理解了Platform Channel这个核心机制，并将其视为一种标准的“通信协议”，整个流程就会清晰很多。希望这个从零开始的电池插件实战，能帮你打通Flutter插件开发的任督二脉。掌握了这项技能，你就能让Flutter应用真正拥有调用一切原生能力的“超能力”，在跨平台开发中更加游刃有余。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter包体积优化：代码分割与资源压缩]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157690448</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157690448</guid><author>nanxuan521</author><pubDate>Tue, 03 Feb 2026 13:58:40 +0800</pubDate><description><![CDATA[Flutter应用的包体积优化是一个系统工程，需要从分析、分割、压缩多个层面协同作战。懒加载：非必要的，等要用的时候再下载。精打细算：必要的资源，用最精简的方式提供。从今天介绍的代码分割和资源压缩入手，坚持在每次发版前查看包体积报告，你会发现让应用“瘦”下来，并没有想象中那么难。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter自动化测试：集成测试与Widget测试]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157688933</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157688933</guid><author>nanxuan521</author><pubDate>Tue, 03 Feb 2026 12:19:24 +0800</pubDate><description><![CDATA[如今，Flutter凭借其出色的跨平台能力和高效的开发流程，已经成为移动应用开发的主流选择之一。但随着应用功能变得越来越复杂，团队规模增长，如何保证代码质量和应用稳定就成了一项实实在在的挑战。这时候，自动化测试就不再是“可有可无”的选项，而是保障项目健康迭代的核心手段。做好Flutter测试，不仅能帮我们在早期揪出潜在的Bug，更能为我们后续重构代码提供坚实的安全网，让我们有底气去优化代码结构。通过建立系统化的测试策略，团队可以大幅减少重复的手工回归测试工作，提升持续集成的效率，最终加快产品交付的速度。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter CI/CD配置：GitHub Actions自动化部署]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157686118</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157686118</guid><author>nanxuan521</author><pubDate>Tue, 03 Feb 2026 10:19:04 +0800</pubDate><description><![CDATA[走到这里，你已经掌握了使用 GitHub Actions 为 Flutter 项目搭建自动化部署管道的核心方法。从代码提交触发，到质量检查、多平台构建，再到最终部署，整个过程完全自动化，这能把你和团队从重复劳动中解放出来。关键是，这套流程不是一成不变的。你可以从本文提供的配置出发，根据自己项目的实际需求进行调整：也许你需要接入 Firebase App Distribution，也许需要自动生成更新日志。随着项目的成长，持续优化你的 CI/CD 流水线，让它成为团队交付高质量应用的坚实后盾。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter Shader编程：着色器与特效实现]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157655142</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157655142</guid><author>nanxuan521</author><pubDate>Mon, 02 Feb 2026 17:54:22 +0800</pubDate><description><![CDATA[Flutter的Shader编程把高级图形开发的能力带进了UI框架的层面。原理：基于GPU渲染管线，Flutter通过SkSL/GLSL支持片段着色器，实现了像素级的精细控制。流程：从写.frag文件、配置资源，到异步加载，再到里创建、设置uniform并画到屏幕上。实践：我们从静态色块走到动态的噪波渐变，看到了用Shader实现动态效果既高效又优雅。优化：缓存程序、精确重绘、选对精度等等，都是保证Shader应用流畅运行的关键。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter渲染管道：RenderObject与Layer深度解析]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157652531</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157652531</guid><author>nanxuan521</author><pubDate>Mon, 02 Feb 2026 16:13:33 +0800</pubDate><description><![CDATA[你可以把Layer理解为一个承载绘制结果（Picture）的容器。RenderObject在绘制时，最终会把绘图指令输出到某个Layer上。Flutter引擎则负责将这些平台无关的Layer树，高效地转化为OpenGL或Metal等图形API的指令，利用GPU进行硬件加速合成。RenderObject树（执行paint方法）↓生成或更新Layer树（包含图片、变换、裁剪等信息）↓提交给Flutter Engine↓Engine将Layer树合成并光栅化为最终的纹理↓提交给GPU显示到屏幕。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter自定义Widget：从零开始创建组件]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157650063</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157650063</guid><author>nanxuan521</author><pubDate>Mon, 02 Feb 2026 14:31:26 +0800</pubDate><description><![CDATA[从实际需求切入，明确了组件要做什么、长什么样。回头补了点原理，理解了Flutter的渲染模型，选了最合适的实现路子（继承动手敲出代码，实现了一个有状态、有交互、可配置的。放到真实场景验证，学会了在列表中管理它的状态。最后琢磨了优化点，思考了如何让它性能更好、更可靠。现在这个已经是个能直接用到项目里的靠谱组件了。把简单的iconEmoji升级成支持SVG或Lottie动画的组件。加入温度单位切换（摄氏/华氏）的功能。用provider或riverpod等状态管理方案，让。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter自定义渲染：CustomPainter绘制指南]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157648048</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157648048</guid><author>nanxuan521</author><pubDate>Mon, 02 Feb 2026 12:23:26 +0800</pubDate><description><![CDATA[Paint对象决定了你画出来的是什么样子。..color = Colors.blueAccent // 颜色..style = PaintingStyle.fill // 样式：fill填充，stroke描边..strokeWidth = 4.0 // 描边宽度..isAntiAlias = true // 开启抗锯齿，让边缘更平滑..strokeCap = StrokeCap.round // 线条末端样式：圆头。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter三方库鸿蒙适配实战：从原理到实践]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157645253</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157645253</guid><author>nanxuan521</author><pubDate>Mon, 02 Feb 2026 10:21:45 +0800</pubDate><description><![CDATA[鸿蒙操作系统发展势头很猛，市场份额也在快速扩大。越来越多的开发者开始面临一个新任务：把现有的 Flutter 应用迁移到鸿蒙平台。根据华为官方数据，截至 2024 年，鸿蒙生态设备数量已经超过了 8 亿台，覆盖了手机、平板、智能穿戴、汽车座舱等各种设备。Flutter 作为谷歌主推的跨平台 UI 框架，其“一次编写，到处运行”的承诺深入人心，但这主要针对的是 Android 和 iOS。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter在鸿蒙端运行原理：OpenHarmony平台集成]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157616845</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157616845</guid><author>nanxuan521</author><pubDate>Sun, 01 Feb 2026 17:41:50 +0800</pubDate><description><![CDATA[通过定制化的Embedder层，Flutter成功地在OpenHarmony上“安家落户”。这套方案本质上是在两个优秀的系统之间搭建了一座高效的数据桥梁，让Flutter的自绘引擎能驱动鸿蒙的屏幕，也让Dart代码能调用鸿蒙的分布式能力。回顾一下核心技术点桥梁是Embedder：它负责处理原生窗口、输入事件和平台通信，是适配工作的核心。渲染两条路：追求极致性能用直接渲染，保证广泛兼容用纹理混合。通信靠Channel。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter跨平台适配：Android/iOS/Web差异化处理]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157615315</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157615315</guid><author>nanxuan521</author><pubDate>Sun, 01 Feb 2026 15:32:41 +0800</pubDate><description><![CDATA[Flutter的跨平台优势不在于隐藏差异，而在于为我们提供了一套优雅处理差异的工具链。成功的适配策略是分层的：从利用Theme和自适应组件处理基础UI，到通过集成深度原生功能，再到为Web量身打造交互体验。核心思想是“关注点分离”：将平台无关的业务逻辑与平台相关的实现细节分开。这样，我们既能享受到代码复用的高效率，又能为每个平台的用户交付最符合他们预期的高质量体验。记住，最终目标不是让应用“看起来一样”，而是让它在每个平台上都“感觉原生”。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter推送通知：local_notifications与firebase_messaging]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157612103</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157612103</guid><author>nanxuan521</author><pubDate>Sun, 01 Feb 2026 10:02:33 +0800</pubDate><description><![CDATA[通过上面的步骤，我们搭建了一个结合和的Flutter推送体系。前者作为可靠的云端入口，后者提供一致且可控的本地展示，这种组合在实践中非常有效。记住，推送通知是把双刃剑。用得好，它是激活用户、传递价值的利器；用不好，频繁打扰或推送无关内容，用户会毫不犹豫地关闭权限甚至卸载应用。始终从用户的角度出发，提供有意义、有温度的通知，才是长久之道。希望这篇结合实践的文章能帮你避开一些坑，更顺畅地实现Flutter的推送功能。如果在实践中遇到新问题，欢迎分享和讨论。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter地图与定位：google_maps_flutter与geolocator]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157611375</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157611375</guid><author>nanxuan521</author><pubDate>Sun, 01 Feb 2026 08:13:54 +0800</pubDate><description><![CDATA[,''';与geolocator的组合为Flutter开发者提供了一套强大且易用的地图定位解决方案。从基本的显示地图、获取位置，到高级的轨迹记录、地理编码，这两个插件都能很好地覆盖。实际开发中，建议根据具体场景调整定位精度和更新频率，在功能与功耗之间找到平衡。如果遇到权限问题或地图不显示，请逐一检查API密钥配置和平台权限设置——这两步往往是初学者最容易出错的地方。希望这篇指南能帮你顺利实现Flutter中的地图与定位功能。如果有任何问题或更优的实现方式，欢迎在评论区交流讨论。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter相机与相册：camera库与image_picker集成]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157611329</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157611329</guid><author>nanxuan521</author><pubDate>Sun, 01 Feb 2026 08:02:07 +0800</pubDate><description><![CDATA[通过camera和这两个插件的组合，Flutter 开发者可以相对轻松地构建出功能强大、体验良好的多媒体功能。本文提供的代码是一个坚实的起点，你可以在此基础上，根据产品需求添加更多特性，如滤镜、人脸贴纸、视频剪辑等。希望这篇指南能帮助你少走弯路。如果在实践过程中遇到问题，不妨多查阅插件的官方文档和 GitHub Issue 列表，那里通常有来自社区的丰富解决方案。]]></description><category></category></item><item><title><![CDATA[Flutter艺术探索-Flutter插件开发：自定义Plugin实战指南]]></title><link>https://blog.youkuaiyun.com/nanxuan521/article/details/157512641</link><guid>https://blog.youkuaiyun.com/nanxuan521/article/details/157512641</guid><author>nanxuan521</author><pubDate>Thu, 29 Jan 2026 16:35:49 +0800</pubDate><description><![CDATA[用Flutter做跨平台开发，“写一次代码，两端都能用”的效率确实很吸引人。但当我们想调用摄像头、读取传感器数据、连接蓝牙或者访问本地文件时，就会发现Flutter框架本身并不能直接和手机硬件打交道。这时候，就需要来扮演“翻译官”的角色，在Dart代码和原生平台（Android/iOS）之间架起沟通的桥梁。今天，我们就通过创建一个，把Flutter插件开发的全过程走一遍。从设计思路、编写代码、性能调优到最终发布，每个环节都会讲到。]]></description><category></category></item></channel></rss>