<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Flutter on PlumePHP</title><link>https://plumephp.com/tags/flutter/</link><description>Recent content in Flutter on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 13 Aug 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/flutter/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD 与自动化发布</title><link>https://plumephp.com/flutter-ci-cd/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-ci-cd/</guid><description>&lt;h2 id="开篇为什么-cicd-对-flutter-至关重要"&gt;开篇：为什么 CI/CD 对 Flutter 至关重要&lt;/h2&gt;
&lt;p&gt;移动端应用的分发流程远比 Web 复杂：iOS 需要证书、Provisioning Profile、App Store Connect 审核；Android 需要密钥库、Play Store 签名(bundle signing)。手动执行这些步骤不仅耗时且容易出错，尤其在团队协作中，&amp;ldquo;我本地能跑但 CI 挂了&amp;quot;是最常见也最头痛的问题。&lt;/p&gt;</description></item><item><title>Dart 语言基础与特性</title><link>https://plumephp.com/dart-basics/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/dart-basics/</guid><description>&lt;h2 id="开篇为什么选-dart"&gt;开篇：为什么选 Dart？&lt;/h2&gt;
&lt;p&gt;Dart 是 Google 于 2011 年发布的编程语言，最初定位为替代 JavaScript 的 Web 语言。虽然这一目标未能实现，但 Dart 凭借简洁的语法、高效的 JIT/AOT 编译能力以及出色的开发工具链，在 2017 年随着 Flutter 的推出迎来了新生。如今，Dart 不仅是 Flutter 框架的唯一开发语言，更通过其现代化的类型系统和异步模型，成为移动、Web、桌面跨平台开发的重要工具。&lt;/p&gt;</description></item><item><title>Flutter Web 与桌面端适配</title><link>https://plumephp.com/flutter-web-desktop/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-web-desktop/</guid><description>&lt;h2 id="开篇flutter-的六端统一愿景"&gt;开篇：Flutter 的六端统一愿景&lt;/h2&gt;
&lt;p&gt;Flutter 从 2019 年的 1.9 版本开始支持 Web，此后陆续加入了 Windows、macOS、Linux 桌面端的支持。如今的 Flutter 已经实现了&amp;quot;六端统一&amp;quot;——同一个代码库可以同时编译为 iOS、Android、Web、Windows、macOS、Linux 六个平台的应用。&lt;/p&gt;</description></item><item><title>Flutter 动画与交互动效</title><link>https://plumephp.com/flutter-animations/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-animations/</guid><description>&lt;h2 id="开篇动画是用户体验的灵魂"&gt;开篇：动画是用户体验的灵魂&lt;/h2&gt;
&lt;p&gt;从滑动的列表项到渐显的页面，从点击按钮时的 ripples 到页面转场时的共享元素动画——动画让界面从&amp;quot;能用&amp;quot;变成&amp;quot;好用&amp;quot;。Flutter 的动画系统由层叠的 API 组成：从开箱即用的 Implicit Animations，到精确控制的 Explicit Animations，再到与 UI 框架深度集成的 Hero 和物理动画。&lt;/p&gt;</description></item><item><title>Flutter 导航与路由管理</title><link>https://plumephp.com/flutter-navigation-routing/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-navigation-routing/</guid><description>&lt;h2 id="开篇flutter-导航的演进之路"&gt;开篇：Flutter 导航的演进之路&lt;/h2&gt;
&lt;p&gt;Flutter 的导航系统经历了从 Navigator 1.0 到 Navigator 2.0 的深刻变革。在早期的 Navigator 1.0 中，路由管理通过命令式 API（push/pop）完成，简单直观但难以处理深层链接、浏览器 URL 同步等复杂场景。Navigator 2.0（又称 Router API）引入了声明式路由的概念，让 URL 成为应用状态的单向数据源，彻底解决了命令式导航的局限。&lt;/p&gt;</description></item><item><title>Flutter 平台通道与原生交互</title><link>https://plumephp.com/flutter-platform-channels/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-platform-channels/</guid><description>&lt;h2 id="开篇当-flutter-遇到原生能力"&gt;开篇：当 Flutter 遇到原生能力&lt;/h2&gt;
&lt;p&gt;Flutter 通过自研渲染引擎实现了 UI 层的跨平台统一，但移动操作系统的能力远不止 UI——推送通知、蓝牙通信、GPS 定位、传感器数据、设备信息、支付 SDK、人脸识别……这些平台特有的功能需要通过&amp;quot;桥接&amp;quot;机制让 Flutter 代码能够调用原生 API。&lt;/p&gt;</description></item><item><title>Flutter 异步编程与网络通信</title><link>https://plumephp.com/flutter-async-networking/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-async-networking/</guid><description>&lt;h2 id="开篇异步是-flutter-的-dna"&gt;开篇：异步是 Flutter 的 DNA&lt;/h2&gt;
&lt;p&gt;Dart 语言是单线程事件循环模型，与 JavaScript 类似。这种设计避免了多线程的竞态条件问题，但也意味着所有代码默认在主 isolate 上执行——如果某个操作阻塞了事件循环，整个 UI 都会卡住。因此，在 Flutter 中编写高效的异步代码不仅是性能优化，更是用户体验的基础。&lt;/p&gt;</description></item><item><title>Flutter 性能优化与内存管理</title><link>https://plumephp.com/flutter-performance-optimization/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-performance-optimization/</guid><description>&lt;h2 id="开篇flutter-性能优化的独特挑战"&gt;开篇：Flutter 性能优化的独特挑战&lt;/h2&gt;
&lt;p&gt;Flutter 通过自研渲染引擎（Skia/Impeller）实现了出色的跨平台渲染性能——默认支持 60fps，高端设备可达 120fps。但这并不意味着 Flutter 应用自动流畅。从 Widget 重建风暴到图片内存爆炸，从阻塞主线程的同步操作到未释放的资源累积，性能问题在不同层面悄然潜伏。&lt;/p&gt;</description></item><item><title>Flutter 插件开发与包发布</title><link>https://plumephp.com/flutter-package-development/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-package-development/</guid><description>&lt;h2 id="开篇flutter-生态的力量"&gt;开篇：Flutter 生态的力量&lt;/h2&gt;
&lt;p&gt;Flutter 的繁荣很大程度上归功于其包生态系统。pub.dev 上有超过 3 万个包，覆盖了从 UI 组件到原生能力扩展的方方面面。作为 Flutter 开发者，你不仅要学会使用这些包，更要掌握如何创建和发布自己的包——这既能解决重复代码的问题，也是回馈社区的方式。&lt;/p&gt;</description></item><item><title>Flutter 本地存储与持久化</title><link>https://plumephp.com/flutter-local-storage/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-local-storage/</guid><description>&lt;h2 id="开篇为什么本地存储至关重要"&gt;开篇：为什么本地存储至关重要&lt;/h2&gt;
&lt;p&gt;在移动应用开发中，本地存储承担着远比&amp;quot;保存设置&amp;quot;更广泛的职责。它是离线功能的基础、网络缓存的载体、用户会话的安全容器，甚至是端侧 AI 模型的存储仓库。Flutter 生态提供了从简单的键值对到完整的 SQL 引擎、从原生文件系统到高性能 NoSQL 数据库的丰富选择。&lt;/p&gt;</description></item><item><title>Flutter 架构模式与最佳实践</title><link>https://plumephp.com/flutter-architecture-patterns/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-architecture-patterns/</guid><description>&lt;h2 id="开篇架构是项目的生命线"&gt;开篇：架构是项目的生命线&lt;/h2&gt;
&lt;p&gt;小型 Flutter 项目可以靠直觉和经验组织代码，但当团队扩大到 10 人以上、功能模块超过 50 个、代码行数超过 10 万行时，没有清晰的架构指导，代码会迅速退化为&amp;quot;大泥球&amp;quot;（Big Ball of Mud）——依赖关系混乱、修改一处引发三处连锁反应、新人上手周期以月计。&lt;/p&gt;</description></item><item><title>Flutter 测试策略与自动化</title><link>https://plumephp.com/flutter-testing/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-testing/</guid><description>&lt;h2 id="开篇为什么-flutter-测试比想象中重要"&gt;开篇：为什么 Flutter 测试比想象中重要&lt;/h2&gt;
&lt;p&gt;Flutter 的声明式 UI 架构有一个天然优势：UI 是状态的纯函数（&lt;code&gt;UI = f(State)&lt;/code&gt;）。这意味着只要给定固定的状态输入，UI 输出就是确定的——这使得 Widget 测试不仅可行，而且高度可靠。相比之下，传统的命令式 UI 框架需要模拟复杂的视图层级和生命周期，测试成本成倍增加。&lt;/p&gt;</description></item><item><title>Flutter 状态管理全解析</title><link>https://plumephp.com/flutter-state-management/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-state-management/</guid><description>&lt;h2 id="开篇为什么状态管理是-flutter-的核心难题"&gt;开篇：为什么状态管理是 Flutter 的核心难题？&lt;/h2&gt;
&lt;p&gt;Flutter 的声明式 UI 本质上是&amp;quot;状态驱动视图&amp;quot;（State → Widget）。当应用规模较小时，StatefulWidget 的 setState 足以应付；但随着页面增多、数据流转复杂化，状态如何组织、如何跨页面共享、如何避免不必要的重建，成为所有 Flutter 开发者必须面对的架构问题。&lt;/p&gt;</description></item><item><title>Flutter 跨平台开发</title><link>https://plumephp.com/posts/flutter/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/posts/flutter/</guid><description>&lt;p&gt;在移动互联网时代，跨平台开发已成为降低研发成本、加速产品迭代的核心策略。Flutter 作为 Google 推出的开源 UI 框架，凭借&amp;quot;一次编写、处处运行&amp;quot;的愿景和接近原生的渲染性能，正在重塑移动开发的格局。不同于传统的基于 WebView 的混合方案，Flutter 使用自研的 Skia/Impeller 渲染引擎直接在 Canvas 上绘制像素，带来了 120fps 的流畅体验和高度一致的跨平台 UI。&lt;/p&gt;</description></item><item><title>Widget 体系与布局系统</title><link>https://plumephp.com/flutter-widgets-layout/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/flutter-widgets-layout/</guid><description>&lt;h2 id="开篇为什么-flutter-选择-widget"&gt;开篇：为什么 Flutter 选择 Widget？&lt;/h2&gt;
&lt;p&gt;Flutter 最具标志性的特性就是&amp;quot;一切皆 Widget&amp;quot;。在 Flutter 中，按钮是 Widget、布局是 Widget、手势是 Widget、甚至应用本身也是 Widget。这种设计的核心思想是&lt;strong&gt;声明式 UI&lt;/strong&gt;：开发者描述界面&amp;quot;应该长什么样&amp;quot;，Flutter 框架负责处理具体的渲染。这与传统的命令式 UI（如 Android 的 View 系统、iOS 的 UIKit）形成鲜明对比——在命令式框架中，开发者需要手动创建、配置、添加、更新每一个 UI 元素。&lt;/p&gt;</description></item></channel></rss>