Flutter 3.38.0(捆绑 Dart 3.10)刚刚发布。这是一次相对聚焦的版本更新——并非重写,但它带来了一些面向开发者的改进(以及几个你不应跳过的迁移步骤)。

Flutter 3.38.0 开发中——你需要了解的内容

16:9 illustration: desktop with Flutter logo, checklist, and platform icons representing an SDK/tooling update and developer checklist.

视频

前言

Flutter 3.38.0(捆绑 Dart 3.10)刚刚发布。这是一次相对聚焦的版本更新——并非重写,但它带来了一些面向开发者的改进(以及几个你不应跳过的迁移步骤)。

快速地图

  • 是的 — 3.38.0 已发布 ,包含框架修复、平台更新、工具改进以及 Dart 3.10
  • 你会迅速注意到的重大改进: 来自 Dart 3.10 的点语法简写、更强大的 Widget 预览工具、针对 iOS(Xcode 26)和 Android(NDK r28 / Java 17)的平台更新,以及多项框架质量修复。
  • 首先执行以下操作: 在功能分支中进行升级,运行 flutter doctor,运行完整的 CI 矩阵,测试在真实设备上的 iOS/Android 构建,并验证包的兼容性。我在下方列出了具体的检查清单。
  • 注意: GitHub 上报告了一个短暂存在的打包不匹配问题(某些构建引用了 Dart 的 beta 构建)——如果工具链中出现任何异常,请查看发布说明或相关 issue。

实际上有哪些新功能(实用亮点)

以下是团队最应关注的内容,每个要点均链接到官方发布的相关信息。

  • Dart 3.10 / 点简写(Dot shorthands) — 一项小而实用的语法改进,可减少常见构造函数/枚举用法的样板代码(例如 mainAxisAlignment: .start)。该功能专注于提升编码体验,将在日常代码中频繁使用。
  • 框架与 UI 调整 — 专注于质量改进,例如优化 OverlayPortal、文本布局、调试辅助工具以及 Web 图像布局修复。这些改进主要提升了正确性和开发人员的工作效率。
  • iOS 平台支持 — 正式支持 iOS 26 / Xcode 27 及部分命令行部署改进(提供迁移指南)。若你面向最新的 Apple 操作系统/工具链,请遵循迁移说明。
  • Android 工具链更新 — 支持 NDK r28,更新至 Java 17,并修复了某些引擎路径中的内存泄漏问题(有助于提升稳定性)。如果你的 CI 镜像锁定了较旧的 NDK 或 JDK,可能需要进行更新。
  • 工具与 IDE — 改进了 Widget 预览器/工具链以及更完善的开发体验功能。使用新预览功能时,迭代速度将更快。

(完整发布说明和详尽的变更日志请参见 Flutter 文档 —— 建议收藏发布页面以获取详细列表。)

这对团队的重要性(直接说明)

  • 开发者体验: 点符号缩写虽然小,但能减少 UI 中的视觉干扰,并加快布局的编写和阅读速度。大量处理 UI 的团队会喜欢更小的代码差异。
  • 平台就绪性: 对最新 iOS 和 Android/工具链的支持意味着当 Apple/Android 要求在构建机器上使用新的 SDK/NDK 版本时,可减少“仅在 CI 中出现”的意外问题。请计划更新 CI 镜像。
  • 迁移表面: 此版本包含弃用和破坏性变更说明——虽然不需要大规模迁移,但如果您的 iOS AppDelegate 经过自定义,请务必查看破坏性变更列表以及 UIScene 迁移助手。
  • 工具链注意事项: 一个 GitHub 问题显示,该版本在某些构件中引用了 Dart 的 beta 版本二进制文件;在发布期间请密切关注你的 flutter --version 和 CI 日志。如果发现 Dart 版本不匹配,请参考相关的问题链接或补丁指引进行处理。

快速示例:点符号缩写(外观示例)

Dart 3.10 使一个常用的小模式变得更简洁:

之前

Column(
  mainAxisAlignment: MainAxisAlignment.start,
  crossAxisAlignment: CrossAxisAlignment.center,
);

之后(点符号缩写)

Column(
  mainAxisAlignment: .start,
  crossAxisAlignment: .center,
);

这纯粹是语法糖——不会破坏现有代码,并且可以通过 Flutter 3.38 中的新 Dart 版本选择启用。

简短的安全升级检查清单(可复制粘贴到你的仓库)

在分支中运行此操作,并逐步进行——直到 CI 显示绿色之前,不要升级 main

  1. 创建一个功能分支git checkout -b upgrade/flutter-3.38
  2. 本地升级flutter upgrade(或使用版本管理工具固定版本)。然后确认 flutter --version
  3. 运行基本健康检查flutter doctor -v 并修复任何缺失的平台工具。
  4. 运行 **flutter pub upgrade**,然后运行 flutter pub outdated 查看需要更新的包。
  5. CI 镜像 :如果你在 CI 环境(Docker / macOS 机器)中构建 Android 应用,请更新 CI 镜像以包含 JDK 17 和 NDK r28,并运行完整的流水线。
  6. iOS 步骤 :使用 Xcode 26 测试设备构建;如果您的应用使用了 AppDelegate 自定义,请遵循 UIScene 迁移说明,或启用自动迁移助手( flutter config --enable-uiscene-migration ),并进行充分测试。
  7. 在真实设备(或设备农场)上运行集成测试 ——UI 流程、深度链接以及后台/恢复行为。
  8. 对 Web 进行冒烟测试 (如果你的目标平台包含 Web)—— 此版本包含 Web 布局/引擎修复;请确保你的应用行为正常,且热重载仍按预期工作。
  9. 监控 CI 日志中的 Dart 版本不匹配问题 :升级后,请验证 CI 中报告的 Dart 版本。如果遇到版本不匹配的情况,请查看 Flutter GitHub 问题列表或发布说明以获取补丁信息。
  10. 绿色合并 ,并通过正常的分阶段发布流程推出(内部测试 → 金丝雀 → 生产环境)。

需要特别注意的事项(经验之谈)

  • 第三方包 :运行 flutter pub outdated,然后更新或锁定关键包。常用包通常会快速升级,但有时原生绑定需要针对新的 NDK/Xcode 版本进行修复。
  • CI & Docker:如果你固定使用较旧的基础镜像,请升级 JDK / NDK / Xcode 工具;否则,Android 原生构建或签名可能会失败。
  • iOS 应用生命周期 :如果你使用了 AppDelegate 黑科技,新的 UIScene 迁移助手可以自动迁移简单情况——但自定义设置可能需要手动修改。迁移后请测试推送通知、深度链接和后台任务。
  • 关注 GitHub 问题 — 发布后立即出现了一些新的报告(例如,Dart 打包不匹配);请关注 Flutter 仓库以获取热修复。

如果出现问题——一个简单的排查手册

  1. 使用 flutter run --releaseflutter build 针对相同目标平台(Android/iOS/web)在本地复现问题,以查看确切的错误信息。
  2. 检查 flutter doctor -v
  3. 如果堆栈跟踪或原生构建错误指向工具链版本(NDK/JDK/Xcode),请将 CI/工具与发布要求保持一致。
  4. 搜索发布说明和重大变更页面;迁移文档通常会概述自动修复方法。
  5. 如果看起来像是版本回归问题(或你发现 Dart 版本不匹配),请检查 Flutter GitHub 问题列表,并在应用热修复期间,如有需要,暂时固定到之前的补丁版本。

有用的链接(直接跳转到这些内容)

总结观点

3.38 是一个质量 + 体验优化版本:包含一些小功能、实用的语法糖,以及平台和工具链更新,可确保你的应用随时支持最新的 SDK。它并非一次“重大变革”,但经过一周的开发后你会明显感受到——更少的困扰和略微加快的开发循环。建议在分支上升级,验证 CI,并重点关注平台工具链,以确保顺利发布。

感谢阅读本文

如果有什么建议,请在评论中让我知道。我很乐意改进。


猫哥 APP

flutter 学习路径


© 猫哥 ducafecat.com

end