参考官方文献:Flutter 3.3 更新详解 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter
框架更新
全局选择
到现在为止,Flutter 在 Web 上的文本选择交互仍然没有达到预期。与 Flutter 应用不同,原生的 Web 应用会将每个节点构建为树形结构。在传统的 Web 应用中你可以轻松用拖动手势来选择网页上的节点,这在 Flutter Web 应用中无法轻松达成。
从今天起,一切都发生了变化。我们引入了 SelectionArea
widget,它的子 widget 现已可以进行随意选择!
只需使用 SelectionArea
包裹住路由显示的内容 (例如 Scaffold
),Flutter 会替你处理好一切,你便可以享受到这项强力的新特性。
想要更全面深入地了解这个绝妙的新功能,请访问 SelectionArea API 页面。
触控板操作
Flutter 3.3 优化了针对触控板的支持。Flutter 不仅提供了更丰富且顺滑的控制,同时也减少了几种特定情况的误触。
将页面滚动到底部的 DartPad,并跟随以下步骤进行操作:
- 缩小窗口让上半部分出现滚动条
- 将指针悬停在上半部分
- 使用触控板进行滚动
- 在 Flutter 3.3 以前,使用触控板滚动会拖动元素,因为 Flutter 将模拟的手势事件进行了下发
- 从 Flutter 3.3 开始,使用触控板滚动会正确地滚动列表,因为 Flutter 会传递「滚动」事件,卡片不会识别这些事件,而列表会进行对应的处理
想了解更多信息,请访问 Flutter 触控板手势 的设计文档。
iPadOS随手写功能
Flutter 现在支持在 iPadOS 上使用 Apple Pencil 进行 随手写 输入。这项功能已默认在 CupertinoTextField
、TextField
和 EditableText
上启用。只需要将 Flutter 升级到 3.3 就可以为你的用户带来这项新功能。
文本输入
为了优化富文本编辑的支持,本次更新我们增加了从底层平台的 TextInputPlugin
接收更加精细化的更新的能力。以前 TextInputClient
只能传递新的编辑状态,而不能细分新旧状态之间的变化量,TextEditingDelta
和 DeltaTextInputClient
填充了这部分的信息差。通过访问这些变化量,你可以为输入区域构建自定义的样式,这个区域会在你输入时展开和收缩。想要了解更多信息,你可以查看 富文本编辑器示例。
Material Design 3 支持
Flutter 团队持续地在整合更多 Material Design 3 的组件到 Flutter 中。本次更新包括了IconButton 的中等和扩大样式。想要跟踪 Material Design 3 的整合进度。你可以在 GitHub 上查看 将 Material 3 带到 Flutter。
桌面端平台
Windows
在先前构建 Windows 桌面应用时,应用的版本只能在文件中进行设置。这样的行为与其他平台上设置版本的行为并不一致。
现在 Windows 桌面应用的版本可以通过 pubspec.yaml
和构建参数进行设置。它有助于当你的应用推送了更新时,在应用中为你的用户提供应用更新功能。
想要了解更多关于设置 Windows 桌面应用版本的内容,请查看 文档。Flutter 3.3 前创建的项目需要手动进行调整才能使用这项功能。
Packages 更新
go_router 发布
当你的应用包含复杂的导航需求时,它可能会让你晕头转向。为了扩展 Flutter 的导航 API,团队发布了新版本的 go_router package,让你在所有平台的路由逻辑设计变得更加简洁。
go_router package 由 Flutter 团队进行维护,通过声明式和基于 URL 的 API 让导航和 deep links 的处理变得更加轻松。最新的 5.0 版本让应用可以通过异步代码进行重定向,其中还包含了一些 破坏性改动。
更多内容请查看官方文档:路由和导航。
后面还有一些工具优化、体验优化、性能优化、调试优化等可前往官网自行查看。。。。。。