
正文
flutter版本管理,flutter20更新
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Flutter开发--Pub包管理
在原生开发中, Android 使用 Gradle 来管理依赖, iOS 用 Cocoapods 来管理依赖,Node 中通过 npm来管理依赖。 Flutter 使用配置文件 pubspec.yaml (位于项目根目录)来管理第三方依赖包。
Pub 是Google官方的Dart Packages仓库,类似于node中的npm仓库,android中的jcenter,我们可以在上面查找我们需要的包和插件,也可以向pub发布我们的包和插件。
Pub工具 包含管理Package、部署Package和部署命令行应用的命令。
如果使用的是Flutter SDK,不要直接使用pub命令。而是使用flutter pub命令,如下:
命令pub get/upgrade/outdated 属于管理Package的依赖关系
用于检索当前 Package 所依赖的其它 Package。如果 pubspec.lock 文件已经存在,则根据该文件中保存的依赖项版本获取对应的依赖项。如有必要,将会创建或更新该文件。
更新 package 依赖
当你添加一个 package 后首次运行 flutter pub get, Flutter 将会保存在 pubspec.lock lockfile 中找到的具体 package 版本。这将确保当你或者团队中其他开发者运行 flutter pub get 后能得到相同版本的 package。
如果你想升级到 package 的最新版本,比如使用 package 的最新特性,请运行 flutter pub upgrade 。这将检索你在 pubspec.yaml 文件中指定的版本约束所允许的最高可用版本。
案例
在flutter项目中导入hive包,在pubspec.yaml文件中添加配置:
执行flutter pub get,可以在 pubspec.lock 中看到 hive 版本是2.1.0,这是因为目前hive的最新版本是2.1.0,配置“^”表示向最新版本兼容,具体可查看Package版本管理( ),所以再执行flutter pub upgrade 可以看到版本还是2.1.0,这个时候会发现pub get和 pub upgrade 效果一样。
但是未来如果 hive 发布了2.2.0版本,这个时候使用flutter pub get在pubspec.lock中看到hive版本依旧是2.1.0,而执行flutter pub upgrade 后在pubspec.lock中看到hive版本就是2.2.0。
现在先在flutter 项目的pubspec.yaml文件添加配置,指定hive版本是2.0.5,如下:
这个时候执行flutter pub get后,可以在pubspec.lock的文件中看到hive版本是2.0.5,如果这个时候更改配置为 hive: ^2.0.5,再执行flutter pub get就会发现在pubspec.lock的文件中看到hive版本还是2.0.5,这个时候可以执行flutter pub outdated查看依赖的每个 package,如下图,
可以看到,Upgrable项hive版本号为2.1.0,执行flutter pub upgrade 后可以看到在pubspec.lock的文件中看到hive版本是2.1.0
在pubspec.yaml文件添加配置:
lxx_package_demo信息如下图:
执行flutter pub get后在pubspec.lock中看到flutter_log版本是0.0.1
现在修改lxx_package_demo版本号为0.0.2,再执行flutter pub get
会发现版本会及时更新为0.0.2,这个时候执行flutter pub get/upgrade效果一样
参考文档:
相关问答
Q1: Flutter设置APP版本与构建版本
当一个纯Flutter APP开发完成,我们要打包发布到App Store和各大安卓市场,这时候我们需要设置APP的版本号。
如果我们在使用原生iOS或者Android开发的时,我们会在info.plist中设置 version 和 build 或是在build.gradle中设置 versionName 和 versionCode ,他们分别表示APP的版本和构建版本。
但是我们在使用Flutter管理APP版本时,打开 pubspec.yaml 只看到一个 version 字段。这时候我们应该怎么设置APP的 version 和 build 呢?
我们在pub上随便找一个Flutter的组件,例如官方的 camera ,我们可以看到截止目前为止最新的版本为: camera: ^0.5.2+1 。看到这里,我想大家都明白了,Dart采用的是加号式的版本描述方式, + 前面是版本号, + 后面是当前版本的build号。所以我们设置APP的版本号和build次数,在这里设置即可,例如: version: 1.2.0+1 。
当我们新建一个Flutter工程的时候,我们分别使用Xcode和Android Studio打开iOS和Android的工程可以看到,iOS中的 version 和 build 的值分别为 FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER :
同样我们打开Android工程可以看到有如下定义:
事实上,Flutter在编译的时候会生成 ios/Flutter/Generated.xcconfig 和 android/local.properties 文件。这两个文件由Flutter编译自动生成,不可更改。记录了包含SDK路径或者文件路径,版本信息,环境配置(release/debug)等信息。原生工程获取版本信息的变量就定义在这两个文件里面。
Q2: Flutter状态管理(五):Redux
Flutter状态管理系列:
Flutter状态管理(一):ScopedModel
Flutter状态管理(二):Provider
Flutter状态管理(三):BLoC(Business Logic Component)
Flutter状态管理(四):ReactiveX之RxDart
Flutter状态管理(五):Redux
有做过H5前端开发的朋友应该很早就接触过这个,Redux在React/VUE中,与在Flutter/Dart中概念一样,没有任何区别;唯一的区别只是使用上的不同。
它主要由三部分组成:
下图是一个完整的数据触发及更新流程:
我们看到上面整个数据流,都是单向的,由View发起,最后到View的更新;
为啥这样设计?
小节二介绍了Redux最基本的原理,但是,如何用Redux来做一些异步操作,比如:加载数据、请求API等?这里就引出来了Redux的中间件(Middleware),中间件能够让我们使得action在到达reducer之前,做些其它“动作”!有了中间件,我们不但可以请求API,还可以改变action,使得分发到其它reducer中去;
上图是有Middleware的流程图。
Redux在Flutter中的使用与在JavaScript中的使用方式稍微有点不同,为啥?
因为JavaScript是弱类型语言,而Dart是强类型语言,这就使得在JS中每个reducer可以独立管理,而在Flutter中需要由一个大对象来管理!
无论在JS中还是在Flutter中,通常都将action、reducer、store各自建一目录,放在redux目录下,目录结构如下:
ReduxPage在build中,也可以直接用StoreBuilder(参考ReduxPage2中写法),因为StoreBuilder也是InheritedWidget。
正因为Redux在Flutter中与在JS中不同,因此,在Flutter中,建议:
Q3: Flutter SDK回退指定版本
由于flutter到sdk是托管在github仓库里的,所以升级降级SDK版本完全可以基于git的形式操作,这也是 flutter version 废弃后官方推荐的改变SDK版本的方式,
通过Git的方式回退版本一共需要四步:
macOS和Linux的用户可以在 命令行 中使用 which 命令查看flutter SDK的路径:
Windows用户可以在 命令行 中使用 where 命令查看flutter SDK的路径:
从执行命令的结果中截取 /bin/flutter 前的路径,就是flutter SDK的路径,例如:
使用 cd 命令进入flutter SDK的路径:
点击链接 flutter的版本列表 选择版本号,注意需要选择和当前Channel一致的版本(参考1.1节中的方法)
flutter 2.3版本之前,提供了 version 和 downgrade 两个参数可以帮助用户回退版本,这两个参数都能回退到指定版本号,区别是:
使用 verison或downgrade参数仅需以下三步 :
点击链接 flutter的版本列表 选择版本号,注意需要选择和当前Channel一致的版本,查看Channle的方法如何:
关于flutter版本管理和flutter20更新的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






