实际开发中引入第三方的功能模块极为常见,也就是别人写好的、封装好的实现特定功能的操作,这里称之为“包”,也可称为“库”。几乎每个平台都有管理第三方库的功能,比如iOS用Cocoapods或Carthage来管理依赖,Node中通过npm , php使用Composer等。
Flutter中对第三方依赖的管理通过配置文件pubspec.yaml来实现的;该文件位于项目根目录下;
我们用到的第三方写在这里:
dependencies: flutter: sdk: flutter dio: ^3.0.0 cupertino_icons: ^0.1.3
比如我添加了dio网络请求的库,如上形式;具体操作如下;
1、找到我们需要的包在代码库中的名称及所需的版本号:
所有的第三方都有个仓库来保存这些东西,我们使用就得先把它找出来,这个仓库就在这里【https://pub.flutter-io.cn】,国内站点访问;常用的第三方功能都能在这找到。
图1
比如,搜dio;
图2
第一个就是我们所需的包,直接如上图1设置即可;OK,这只是开始,然后执行
flutter pub get
图3
获取代码到本地,也就是从远程仓库下载到本地,才能正常使用。
2、获取第三方包
直接如图3在Androidstudio中操作,不出意外的报错了;
Running "flutter pub get" in dctt_flutter...
终端一直提示这种状态,等了好久报错超时,无法连接“pub.dartlang.org/”,这是境外的,网络被墙了无法访问;
明明在系统变量里配置了访问的国内镜像呢;
export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cnexport PATH=/Users/uu/Desktop/flutter/sdk/bin:$PATH
在工具中却不起作用;此路不通,试试命令行操作;
MacBook-Pro dctt_flutter % flutter pub getWaiting for another flutter command to release the startup lock...
还是报错了,上次操作未完成被锁住了,这个好处理;只要进入flutter sdk 目录,然后找到bin/cache/lockfile文件,删除后再运行命令,错误没了。
命令执行完成,此时包应该下载到本地了;pubspec.lock 文件中可以看到有包的信息;
代码中输入dio:如下有反应了,这说明包引入成功了!^_^!
3、下载的第三方包的位置
下载的代码包去哪里了,我们的项目中没有看到呀!不像iOS的那样,直接项目工程下就看到下载的代码;
顺着提示路径我们找到了这里:
居然在我们的Flutter SDK 中缓存目录里,
里面两个目录对应两个镜像地址,里面的包就是我们远程下载的,然后项目中直接使用,打包时直接链接进来了;
终于知道包怎么回事了,下面就可以在项目中愉快的使用了,不知道怎么用?不知道有什么功能?都没关系,直接去文档描述及示例,用了几次自然就熟悉了。