重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在原生开发中, Android 使用 Gradle 来管理依赖, iOS 用 Cocoapods 来管理依赖,Node 中通过 npm来管理依赖。 Flutter 使用配置文件 pubspec.yaml (位于项目根目录)来管理第三方依赖包。
专业从事企业网站建设和网站设计服务,包括网站建设、国际域名空间、雅安服务器托管、企业邮箱、微信公众号开发、微信支付宝小程序开发、app软件定制开发、软件开发、等服务。公司始终通过不懈的努力和以更高的目标来要求自己,在不断完善自身管理模式和提高技术研发能力的同时,大力倡导推行新经济品牌战略,促进互联网事业的发展。
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效果一样
参考文档:
Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart IO 库来操作文件的,不过和 Dart VM 相比,Flutter 有一个重要差异是文件系统路径不同,这是因为Dart VM 是运行在 PC 或服务器操作系统下,而 Flutter 是运行在移动操作系统中,他们的文件系统会有一些差异。
Android 和 iOS 的应用存储目录不同, PathProvider 插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置:
File代表一个整体的文件,他有三个构造函数,分别是:
文件读取本身有两种形式,一种是文本,一种是二进制。
2.2.1 读取文本内容
如果是文本文件,File提供了readAsString、readAsLines、readAsStringSync、readAsLinesSync方法,读取文本内容
readAsString 一次性读取所有文本
readAsLines 一行行的读取文本
结果返回的是一个List,list中表示文件每行的内容
readAsStringSync、readAsLinesSync同步读取文本
2.2.2 读取二进制内容
如果文件是二进制,那么可以使用readAsBytes或者同步的方法readAsBytesSync:
dart中表示二进制有一个专门的类型叫做Uint8List,他实际上表示的是一个int的List。
上面提到的读取方式,都是一次性读取整个文件,缺点就是如果文件太大的话,可能造成内存空间的压力。
所以File为我们提供了另外一种读取文件的方法,流的形式来读取文件.
示例
dart提供了open和openSync两个方法来进行随机文件读写:
写入和文件读取一样,可以一次性写入或者获得一个写入句柄,然后再写入。
一次性写入的方法有四种,分别对应字符串和二进制
句柄形式可以调用openWrite方法,返回一个IOSink对象,然后通过这个对象进行写入:
默认情况下写入是会覆盖整个文件的,但是可以通过下面的方式来更改写入模式:
虽然dart中所有的异常都是运行时异常,但是和java一样,要想手动处理文件读写中的异常,则可以使用try,catch:
我们还是以计数器为例,实现在应用退出重启后可以恢复点击次数。 这里,我们使用文件来保存数据:
1.引入PathProvider插件;在pubspec.yaml文件中添加如下声明:
执行 flutter pub get
2.实现如下
参考:
gRPC是谷歌开发的一款远程过程调用系统,可以让客户端像调用本地对象一样使用服务端应用的方法,使用protocol buffers接口定义语言来定义服务方法,protocol buffer定义参数和返回类型。
protobuf类似json,是一种数据结构协议,在android studio中安装Protobuf Support,方便查看编写的proto文件
dart使用proto插件将proto文件生成对应的dart文件,使用如下步骤
1、安装flutter之后,再flutter的下面路径中有pub命令,需要将命令加入到path中。
可以vi ~/.zshrc,在文件中加入source ~/.bash_profile,然后在vi ~/.bash_profile文件中加入下面路径(:分割不同的路径)
export PATH=/Users/webull/app/flutter/bin:/Users/webull/app/flutter/bin/cache/dart-sdk/bin:/Users/webull/.pub-cache/bin:$PATH
其中fluter/bin是flutter的命令路径,dart-sdk/bin中包含了pub和其他dart命令,.pub-cache/bin是之后运行pub之后建立的路径,里面包含了proto-gen-dart命令,用来将proto文件转换为dart的命令
2、使用下面的命令安装proto插件
$ pub global activate protoc_plugin
安装完成后,上面的用户目录中的.pub-cache目录才会有proto-gen-dart文件。
1、其中/Users/webull是我的用户目录 app/flutter是flutter的安装目录
参考:
1、gRPC介绍
2、gRPC配置