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

哈喽,我是老刘

随着 Flutter 3.22 版本的发布,我们迎来了一个激动人心的新特性,让我们来看看这对我们的开发工作会造成哪些影响。
本文只整理个人认为对开发者影响比较大的部分
如果想看完整的更新内容可以看这里:
https://medium.com/flutter/whats-new-in-flutter-3-22-fbde6c164fe3icon-default.png?t=N7T8https://medium.com/flutter/whats-new-in-flutter-3-22-fbde6c164fe3

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

Dart 宏功能的到来,意味着我们可以在编译时生成代码,这将极大减少我们编写样板代码的工作量,同时提高代码的可维护性和开发效率。
当然这个功能目前还处于实验阶段,但是已经可以预见很多的场景了。

有些人可能认为我有些夸大,可能很多客户端开发者对宏这个功能接触不多。
我早年是做网络安全的,写c很多年了。
在c的世界里,我们会在项目中大量使用宏来控制代码的方方面面
比如命令行模版是用宏编写的、不同的cpu平台的编译差异用宏来区分

举个最简单的例子:
我们经常在代码中打印调试信息,类似下面这样

Log.d('User info : ${user.getInfoStr()}')
不管是不是debug环境,这行代码本身一定会执行,也就是说 user.getInfoStr()和Log.d() 这两个方法一定会调用
只不过在 Log.d() 这个函数内部,我们会判断当前的运行环境是不是debug环境,最终决定信息是不是会输出
而事实上在Release环境中我们是不希望这些函数被调用的,甚至不希望这行代码被编译到Release包中
如果不希望执行,我们需要把代码改成下面这样
If (isDebug)
  Log.d('User info : ${user.getInfoStr()}');

如果每次打印debug信息都需要这么写无疑很不方便
而且即使这样写也无法做到不编译到Release包中
而在c语言中,碰到类似的情况
我们可以很容易的使用宏生成一个debug指令,在非debug环境下,这些代码不会被编译

// 定义宏
#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性能得到了显著提升,使得用户界面更加流畅,视觉效果更加出色。

image.png

Stencil-then-Cover 渲染策略:底层优化的新方向
这项新的渲染策略,针对复杂路径的渲染进行了优化,提升了渲染效率,尤其是在处理复杂图形时。

Stencil-then-Cover 压缩.gif

可以看这里每帧耗时 

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

WebAssembly(Wasm)的支持,让 Flutter 应用能够在 web 浏览器中以接近原生的性能运行,这无疑为 Flutter 应用的跨平台部署增添了新的维度。
Wasm应该是Flutter未来在Web端的标准方案了,也彻底和现有的前端框架走到不同的路上。

4. Framework 更新:

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

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

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

Navigating within the app.gif


详情可以看这里:
Predictive back gesture Android · Issue #132504 · flutter/flutter · GitHubumbrella issue for the adding support for the Android 14 feature, Predictive back navigation. #109513 #131961icon-default.png?t=N7T8https://github.com/flutter/flutter/issues/132504#issuecomment-2025776552

总结

Flutter 3.22 带来的不仅仅是性能的提升,更是开发体验的革新。
从这些更新也能看出在Google裁员后,Flutter项目受到的影响并没有那么大。
好了,前面就是我个人总结Flutter 3.22中对我们开发影响较大的一些更新内容。
如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDMzNTM0Mw==&mid=2247483665&idx=1&sn=56aec9504da3ffad5797e703c12c51f6&chksm=c12c4d11f65bc40767956e534bd4b6fa71cbc2b8f8980294b6db7582672809c966e13cbbed25#rd

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值