fluttter 项目升级到2.2.0
在尝试升级flutter到2.2.0时遇到一些适配问题,记录一下供以后查看:
1.修改pubspec.yaml,升级插件
少数三方库还没有支持空安全:sharesdk_plugin,还有一些包含本地库的异常:umeng_sdk:
path: ./umeng_sdk/
2.适配代码
由于要适配空安全,很多可能为空的变量都要初始化或者定义为可为空(?.)或者(!),这些变量的定义方式都会牵连很多地方,比如返回值也许会不一致,所以这要看实际情况来选择定义为什么方便还要安全;
服务端请求接口也有改动
@POST("/bike/userBike/defaultUserBike")
@FormUrlEncoded()
Future<void> defaultUserBike({
@required @Field() int userBikeId,
});
改为
@POST("/bike/userBike/defaultUserBike")
@FormUrlEncoded()
Future<void> defaultUserBike(
@Field() int? userBikeId,
);
或者
@POST("/bike/userBike/defaultUserBike")
@FormUrlEncoded()
Future<void> defaultUserBike(
@Field() int userBikeId,
);
不可为空的情况,一旦后端返回为空就会抛异常,你初始化了都没用,会报Null类型无法转换为String等类型,可为空又感觉没有起到空安全的作用,界面里的变量可不可为空都还好控。
升级三方库后,第三方库或许有些改动,比如dio,
Dio()..interceptors.add(InterceptorsWrapper({
InterceptorSendCallback onRequest,
InterceptorSuccessCallback onResponse,
InterceptorErrorCallback onError,
}))
onError ,onResponse, onRequest 参数和返回值都有改动,查看才知道为什么之前访问接口一直没有返回结果呢,还以为是其他请求头的问题。
3.编译问题
好不容易修改完代码错误,编译又要花一段时间:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'C:\Users\IMBA\flutter\bin\flutter.bat'' finished with non-zero exit value 1
一般在这个错误之前还会有一些其他错误原因,修改完之后还是有这个报错那就只能尝试clean 删除pubspec.lock,重新编译。 之前运行好好的突然还报GC overhead limit exceeded错误!!!我可什么都没改,我可太难了。。。。
flutter不向下兼容,升级起来的代价太大了,都不敢轻易升级,改动实在太多,测了测listview展示图片列表的效果,的确比之前体验好一些,但还是要压缩图片,不然返回图片列表的时候会有闪烁,不知道相当大量的图片会怎么样,上下滑动列表也会重新渲染,不过这个还是能接受的,毕竟内存为大。所以暂时也还没有适配2.2.0 哈哈哈。。。