我们开发者主要是看Flutter的渲染性能,插件的支持兼容程度,是否有严重的Bug和一些废弃的API和Widget的修改,是否新增了想要的控件等等因素。
现在,Flutter3.24以及Dart3.5在稳定渠道的推出,我个人觉得比较不错。此次更新通过优化渲染引擎和内存管理使得的性能显著提升,应用运行更加流畅。并且修复了一些Bug,是我个人比较推荐升级的一个版本。
我个人比较推荐3.163.193.24这几个版本,我个人的电脑也是安装了这三个版本。目前从3.19升级到3.24的过程有哪些坑,修复了哪些问题,哪些需要注意的地方,在本文中我都会给大家指出,也是希望大家少踩坑了。
我个人是使用的第二种方式,配置了多个Flutter版本。
配置完成之后可以查看环境变量以及输出命令
别忘记了配置AS中对应项目的Flutter版本,否则也不会有效果哦。
最初由于涉及在Web端上按Tab键切换焦点的问题,改动到ModalRoute的类
最终导致的是移动端的跳转页面返回页面会造成页面的rebuild,也就是说只要使用到ModalRoute类去做监听去拿路由参数等操作都会导致rebuild.
可以看到我们的页面onPause和onResume是可以正常触发,但是每次onPause和onResume的时候就会重新build一次,听说Flutter3.24版本修复了这个漏洞。
其实就是新添加了几个API,在ModalRoute获取内部常用属性的一些快速入口做了场景化封装。
例如我们想获取路由的设置拿到参数之类的,我们可以使用新方式
在ModalRoute类中修改如下代码:
默认支持了MaterialYou的风格,但是国内的开发环境,懂的都懂,完全用不到直接是负体验,甚至我们需要去除一些MaterialYou的效果,比如入口的配置设置,Appbar的滚动变色处理等等。
主要是一些API不再支持,删除了一些API,导致项目报错。
主要是WidgetsBindingObserver新增的几个回调,和ThemeData的字段调整。
//3.24.0新加的回调@overridevoiddidChangeViewFocus(ViewFocusEventevent){}@overridevoidhandleCancelBackGesture(){}@overridevoidhandleCommitBackGesture(){}@overrideboolhandleStartBackGesture(PredictiveBackEventbackEvent){returnfalse;}@overridevoidhandleUpdateBackGestureProgress(PredictiveBackEventbackEvent){}我们只需要默认实现和去除一些ThemeData即可。
不管你是否支持window平台,可能部分插件自带的win32依赖你也需要升级到最新版本,否则无法运行
#5.5.0报错,这里强制指定版本适配Flutter版本3.24.0win32:5.5.4Android的项目不支持applyplugin的方式,统一只能用id的方案了。
plugins{id"com.android.application"id"kotlin-android"id"kotlin-kapt"id"dev.flutter.flutter-gradle-plugin"}plugins{id"dev.flutter.flutter-plugin-loader"version"1.0.0"id"com.android.application"version"7.1.2"applyfalseid"org.jetbrains.kotlin.android"version"1.8.0"applyfalse}如果你还是使用的旧版本的依赖方式如:
applyplugin:'com.android.application'applyplugin:'kotlin-android'applyplugin:'kotlin-kapt'applyfrom:"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"那么请你检查你的android包下面的.gradle文件需要替换依赖方式哦。
这个其实也很好理解,它用于构建可以在所有方向滚动的高性能树形结构,关键是它支持各种方向的滚动,很好用。并且还出了TreeSliver配合在列表中使用。之前需要我们自定义实现的,现在官方给我们做好了。
轮播控件我们一般都是使用第三方的插件,好用的轮播插件太多了,这里官方出的轮播比较简单,如果是简单的轮播需求不想导入第三方的插件可以试试。
老生长谈的问题,一直在优化中。
支持初步的访问Swiftpackage生态系统。Flutter插件将能够利用不断增长的Swiftpackage生态系统!简化Flutter安装。
SwiftPackageManager与Xcode捆绑在一起。将来,开发者无需安装Ruby和CocoaPods就可以在Apple平台上使用Flutter。
不过我们还是用的CocoaPods,目前也没有尝试过,后期说不定有用。
SharedPreferences默认使用PreferencesDataStore了而不是SharedPreferences了,这...我只能说太激进了。不过对于开发者和用户来说没什么区别,API还是那样。
这一点我倒是有感触,确实好用了很多。
本文大致介绍了3.24版本的新特性和修复的问题,以及升级到3.24需要注意的坑。
如果感觉本文对你有一点的启发和帮助,还望你能点赞支持一下,你的支持对我真的很重要。