flutter开发将项目从flutter版本3.19.6升级到3.24.3过程遇到问题记录Type 'UnmodifiableUint8ListView' not found
1. android studio修改当个项目的flutter版本,不影响其他项目工程的flutter编译版本
1.1 项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择flutter sdk路径
1.2 项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择dart sdk路径
2. 点开打开项目根目录下的pubspec.yaml文件
2.1 右上角会出现Pub get
按钮,点击同步更新依赖
- 也可以通过cmd命令行执行:来到项目根目录下,执行
flutter pub get
2.2 可能出现依赖冲突,这里提供两个解决方法
- 方法1:依赖库版本冲突,可以先给该依赖库版本指定为any,比如
url_launcher: any
,然后执行pub get
看看实际下载的是哪个版本的url_launcher,然后再将any改为具体的版本。 - 方法2:如果方法使用了还是出现依赖冲突编译失败,可以使用
dependency_overrides
关键字,强制依赖某个具体的版本,比如:dependency_overrides: url_launcher: ^6.3.0 #多个版本冲突时,具体使用哪个版本,主要看哪个版本能编译通过,然后看主模块使用哪个版本,然后看哪个版本是重要的,如果没啥区别就使用高版本的吧,毕竟在做升级工作
- 方法3:那就是如果能拿到源代码的话,就把源代码拿下来修改了,把在线依赖改为使用本地依赖了,不过这个一般没必要这样,后续升级维护工作量变多了
2.3 如果依赖库的依赖出现冲突怎么办?项目里面都搜索不出哪里使用了,这个时候就得想方法整理出依赖库之间的依赖关系了
- 解决方法:cmd来到项目的根目录下执行
flutter pub deps
,比如命令,将在项目根目录下生成deps.txt文件,依赖关系树状形式显示出来,哪个库依赖了哪个一目了然
3. 其他问题记录
3.1 问题1:Error during compilation of a Flutter app for Windows: Type 'UnmodifiableUint8ListView' not found
- 解决方法:执行
flutter pub upgrade --major-versions
3.2 问题2:编译构建成功了,运行的时候报错,看着是缓存的原因,部分代码索引不到,点击跳转不过去或者跳转到之前旧的依赖库里面
- 解决方法:清除缓存,重新下载依赖库,先执行
flutter pub cache clean
,然后执行flutter pub get