Flutter 3.35全端开发新突破:多窗口支持来了!

最近接了个私活要做全端开发,第一时间想到的就是Flutter!结果一查版本发现,Flutter 3.35都出来了!这次更新简直太香了,特别是多窗口支持终于发布了,虽然暂时只支持Windows和macOS,但这绝对是个重磅消息!

作为一名在软件开发圈摸爬滚打多年的老司机,今天就来给大家深度解析Flutter 3.35的核心更新,看看这次官方又给我们带来了哪些惊喜!

多窗口支持:桌面开发的春天终于来了!

说到这次最重磅的更新,那绝对是多窗口支持!Canonical团队终于在这个功能上取得了突破性进展。在Flutter 3.35中,已经实现了在Windows和macOS中创建和更新窗口的基础逻辑。

这意味着什么?以前我们做桌面应用只能憋屈地用单窗口,现在终于可以像传统桌面应用一样支持多窗口了!想象一下,你可以在一个窗口里写代码,另一个窗口里看文档,再开一个窗口处理其他任务,这体验简直不要太爽!

不过有点意思的是,Canonical作为Ubuntu的开发商,Linux系统的支持居然是最晚的,预计在后续版本才会更新。看来连官方都有自己的"小心思"啊!

Web平台重大突破:Hot Reload默认启用!

Flutter Web这次也迎来了重大升级!从3.35开始,Flutter Web将默认启用Hot Reload功能。作为一个经常需要调试Web应用的开发者,这个功能简直是救命稻草!

以前在Web平台上调试,每次修改代码都要重新编译,那个等待的过程简直让人抓狂。现在有了Hot Reload,修改代码后几乎是秒级生效,开发效率直接起飞!

更厉害的是,官方还在为WebAssembly (Wasm)做准备。现在每个JS build都会执行一次Wasm的"dry run"编译,通过一系列检查确定应用程序的Wasm适配情况。看得出来,Flutter Web正在Wasm路线上一路狂奔,未来的性能表现值得期待!

UI体验全面升级:Material和Cupertino双管齐下

虽然官方已经宣布要把Material和Cupertino风格控件从Framework中剥离出来独立维护,但这次更新还是给我们带来了不少惊喜:

Material组件的新成员

  • DropdownMenuFormField:终于可以把M3效果的DropdownMenu直接集成到表单中了!
  • Scrollable NavigationRail:导航栏支持滚动模式,再也不用担心选项太多显示不完了
  • NavigationDrawer增强:现在可以添加页眉和页脚,界面更加灵活

Cupertino的iOS味道更浓了

  • CupertinoExpansionTile:可扩展和可折叠的列表项,iOS用户的福音
  • 触觉反馈优化:CupertinoPicker和CupertinoSlider都加入了触觉反馈,体验更接近原生
  • RSuperellipse形状:许多Cupertino组件都更新使用了这个形状,提供iOS用户期望的标志性连续角外观

特别值得一提的是,Slider的值指示器现在可以配置为始终可见:

const SliderThemeData(showValueIndicator: ShowValueIndicator.always)

性能优化不断:Engine层持续发力

Impeller渲染引擎这次又迎来了大幅优化:

  • 删除了MSAA中间目标,提升渲染效率
  • 优化了路径渲染算法
  • 添加了Vivante GPU支持,覆盖更多硬件平台
  • 修复了VideoPlayer中的内存泄漏问题
  • 优化了模糊效果的计算,大sigma值的模糊现在更清晰

针对不同平台的优化也很到位:

  • iOS:修复了ClipRSuperellipse嵌套WebView的崩溃问题,恢复了Live Text(OCR)功能
  • Android:模板项目升级到Android 24,修复了多个渲染相关的崩溃问题
  • macOS:修复了显示P3颜色的问题

AI编码助手正式发布:开发效率再升级

Dart和Flutter MCP Server正式stable发布!这个AI编码助手可以:

  • 实时错误修复:检查Widget树,识别RenderFlex溢出并自动修复
  • 智能依赖管理:在pub.dev上找到最佳包并自动添加到pubspec.yaml
  • 代码生成和纠错:生成功能样板代码并自行纠正分析错误

现在已经可以通过Gemini Code Assist、Firebase Studio、GitHub Copilot和Cursor等工具连接使用。对于我们开发者来说,这简直是如虎添翼!

Widget Preview:设计系统的利器

实验性的Widget Preview功能终于来了!现在可以在完全独立的沙盒环境中可视化和测试Widget,特别适合构建设计系统或测试组件在不同配置下的表现。

使用很简单,只需要添加@Preview注解:

@Preview(name: 'Top-level preview')
Widget preview() => const Text('Foo');

class MyWidget extends StatelessWidget {
  @Preview(name: 'Constructor preview')
  const MyWidget.preview({super.key});
  
  // ...
}

然后运行flutter widget-preview start就可以在Chrome中预览了!虽然目前还不支持git依赖,但对于组件开发来说已经很实用了。

Analysis Server性能飞跃:速度提升50%!

这次更新还有个隐藏的重大改进:Analysis Server现在使用AOT编译的快照运行,性能提升显著!

测试数据显示:

  • 短命令(如格式化)几乎瞬间完成
  • 长时间命令(如代码分析)速度提升近50%

对于我们这些经常需要运行dart analyze和dart fix的开发者来说,这个提升真的很明显!

写在最后:Flutter的未来更值得期待

Flutter 3.35的发布,标志着Flutter在全端开发路上又迈出了坚实一步。多窗口支持的到来,让桌面应用开发变得更加灵活;Web平台的Hot Reload默认启用,大大提升了开发体验;AI编码助手的加入,让我们的工作效率更上一层楼。

虽然官方计划将Material和Cupertino库从核心框架中独立出来,这个过程可能会比较漫长,但从长远来看,这种解耦绝对是正确的选择。它能让Flutter的核心架构更专注于渲染性能,而设计库可以独立快速迭代。

作为开发者,我们现在要做的就是跟上Flutter的节奏,积极拥抱这些新特性。多窗口功能虽然目前只支持Windows和macOS,但相信Linux支持很快就会到来。那么,大家准备好成为第一批"吃螃蟹"的人了吗?

Flutter的未来充满无限可能,让我们一起期待更多惊喜的到来!

原文链接:,转发请注明来源!