哈喽,我是老刘
随着 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 的新调整
包括 MaterialState
到 WidgetState
的重命名,以及表单验证的改进,这些 API 的调整和优化,让我们的应用更加健壮,代码更加清晰。
Flavor-conditional asset binding:构建配置的新灵活性
现在可以根据不同的构建风味来捆绑资源,为不同的配置提供定制化的资源,这增加了构建的灵活性。
预测返回手势:用户体验的新细节
增加了对 Android 即将推出的预测性后退功能的更多支持,用户可以在后退手势中窥视上一条路线甚至上一条应用程序。
详情可以看这里:
github.com/flutter/flu...
总结
Flutter 3.22 带来的不仅仅是性能的提升,更是开发体验的革新。
从这些更新也能看出在Google裁员后,Flutter项目受到的影响并没有那么大。
好了,前面就是我个人总结Flutter 3.22中对我们开发影响较大的一些更新内容。
如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》