Flutter 3.22 更新要点:开发者的新福音

哈喽,我是老刘

随着 Flutter 3.22 版本的发布,我们迎来了一个激动人心的新特性,让我们来看看这对我们的开发工作会造成哪些影响。

本文只整理个人认为对开发者影响比较大的部分

如果想看完整的更新内容可以看这里:
medium.com/flutter/wha...

1. Dart macros:代码生成的新篇章

Dart 宏功能的到来,意味着我们可以在编译时生成代码,这将极大减少我们编写样板代码的工作量,同时提高代码的可维护性和开发效率。

当然这个功能目前还处于实验阶段,但是已经可以预见很多的场景了。

有些人可能认为我有些夸大,可能很多客户端开发者对宏这个功能接触不多。

我早年是做网络安全的,写c很多年了。

在c的世界里,我们会在项目中大量使用宏来控制代码的方方面面

比如命令行模版是用宏编写的、不同的cpu平台的编译差异用宏来区分

举个最简单的例子:

我们经常在代码中打印调试信息,类似下面这样

dart 复制代码
Log.d('User info : ${user.getInfoStr()}')

不管是不是debug环境,这行代码本身一定会执行,也就是说 user.getInfoStr()和Log.d() 这两个方法一定会调用

只不过在 Log.d() 这个函数内部,我们会判断当前的运行环境是不是debug环境,最终决定信息是不是会输出

而事实上在Release环境中我们是不希望这些函数被调用的,甚至不希望这行代码被编译到Release包中

如果不希望执行,我们需要把代码改成下面这样

dart 复制代码
If (isDebug)
  Log.d('User info : ${user.getInfoStr()}');

如果每次打印debug信息都需要这么写无疑很不方便

而且即使这样写也无法做到不编译到Release包中

而在c语言中,碰到类似的情况

我们可以很容易的使用宏生成一个debug指令,在非debug环境下,这些代码不会被编译

c 复制代码
// 定义宏
#ifdef DEBUG
#define DEBUG_PRINT(fmt, ...) printf(fmt, __VA_ARGS__)
#else
#define DEBUG_PRINT(fmt, ...) /* 空操作 */
#endif

// 使用宏
DEBUG_PRINT("Debug: %s", "This is a debug message");  // 在非debug环境,编译展开宏后,这里是空白

上面只是使用宏的一个简单的例子,还有很多场景可以考虑通过宏来优化:

  • 自动生成数据模型的 JSON 序列化和反序列化代码。

  • 生成复杂的 UI 组件模板。

  • 创建可重用的代码片段,简化代码复用。

  • 实现自定义的领域特定语言(DSL),简化复杂逻辑的表达。

    • 前面的debug就是这类

接下来我们看看Flutter 3.22还有哪些更新

2. 引擎方面的更新:性能优化的新高度

Impeller 现已在 Android 上提供完整功能。

Vulkan backend加入

Vulkan 后端的加入,为 Flutter 应用在支持 Vulkan 的设备上提供了更优的图形性能,这对于需要复杂图形渲染的应用,如游戏和动画,是一个巨大的福音。

Blur 性能改进:视觉体验升级

在 iOS 和 Android 上,Blur在Impeller中被重新实现了,对比skia性能得到了显著提升,使得用户界面更加流畅,视觉效果更加出色。

Stencil-then-Cover 渲染策略:底层优化的新方向

这项新的渲染策略,针对复杂路径的渲染进行了优化,提升了渲染效率,尤其是在处理复杂图形时。

可以看这里每帧耗时

3. Wasm Native:跨平台的新征程

WebAssembly(Wasm)的支持,让 Flutter 应用能够在 web 浏览器中以接近原生的性能运行,这无疑为 Flutter 应用的跨平台部署增添了新的维度。

Wasm应该是Flutter未来在Web端的标准方案了,也彻底和现有的前端框架走到不同的路上。

4. Framework 更新:

API 的新调整

包括 MaterialStateWidgetState 的重命名,以及表单验证的改进,这些 API 的调整和优化,让我们的应用更加健壮,代码更加清晰。

Flavor-conditional asset binding:构建配置的新灵活性

现在可以根据不同的构建风味来捆绑资源,为不同的配置提供定制化的资源,这增加了构建的灵活性。

预测返回手势:用户体验的新细节

增加了对 Android 即将推出的预测性后退功能的更多支持,用户可以在后退手势中窥视上一条路线甚至上一条应用程序。

详情可以看这里:
github.com/flutter/flu...

总结

Flutter 3.22 带来的不仅仅是性能的提升,更是开发体验的革新。

从这些更新也能看出在Google裁员后,Flutter项目受到的影响并没有那么大。

好了,前面就是我个人总结Flutter 3.22中对我们开发影响较大的一些更新内容。

如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。

点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。

可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》

相关推荐
周全全11 分钟前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist
android·数据库·mysql
DisonTangor44 分钟前
苹果发布iOS 18.2首个公测版:Siri接入ChatGPT、iPhone 16拍照按钮有用了
ios·chatgpt·iphone
- 羊羊不超越 -1 小时前
App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)
android·ios·harmonyos
wk灬丨1 小时前
Android Kotlin Flow 冷流 热流
android·kotlin·flow
千雅爸爸1 小时前
Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)
android
晨曦_子画2 小时前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
孤客网络科技工作室2 小时前
AJAX 全面教程:从基础到高级
android·ajax·okhttp
Mr Lee_4 小时前
android 配置鼠标右键快捷对apk进行反编译
android
顾北川_野4 小时前
Android CALL关于电话音频和紧急电话设置和获取
android·音视频