实际开发中引入第三方的功能模块极为常见,也就是别人写好的、封装好的实现特定功能的操作,这里称之为“包”,也可称为“库”。几乎每个平台都有管理第三方库的功能,比如iOS用Cocoapods或Carthage来管理依赖,Node中通过npm , php使用Composer等。

Flutter中对第三方依赖的管理通过配置文件pubspec.yaml来实现的;该文件位于项目根目录下;




flutter调用android类 flutter调用android sdk_flutter调用android类


我们用到的第三方写在这里:

dependencies:  flutter:    sdk: flutter  dio: ^3.0.0  cupertino_icons: ^0.1.3

比如我添加了dio网络请求的库,如上形式;具体操作如下;

1、找到我们需要的包在代码库中的名称及所需的版本号:

所有的第三方都有个仓库来保存这些东西,我们使用就得先把它找出来,这个仓库就在这里【https://pub.flutter-io.cn】,国内站点访问;常用的第三方功能都能在这找到。


flutter调用android类 flutter调用android sdk_flutter_02

图1


比如,搜dio;


flutter调用android类 flutter调用android sdk_怎么引入gallery中的代码_03

图2


第一个就是我们所需的包,直接如上图1设置即可;OK,这只是开始,然后执行

flutter pub get


flutter调用android类 flutter调用android sdk_怎么引入gallery中的代码_04

图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文件,删除后再运行命令,错误没了。


flutter调用android类 flutter调用android sdk_flutter调用android类_05


命令执行完成,此时包应该下载到本地了;pubspec.lock 文件中可以看到有包的信息;

代码中输入dio:如下有反应了,这说明包引入成功了!^_^!


flutter调用android类 flutter调用android sdk_flutter调用android类_06


3、下载的第三方包的位置

下载的代码包去哪里了,我们的项目中没有看到呀!不像iOS的那样,直接项目工程下就看到下载的代码;

顺着提示路径我们找到了这里:


flutter调用android类 flutter调用android sdk_flutter 真机无法调试 sdk报错_07


居然在我们的Flutter SDK 中缓存目录里,


flutter调用android类 flutter调用android sdk_flutter 真机无法调试 sdk报错_08


里面两个目录对应两个镜像地址,里面的包就是我们远程下载的,然后项目中直接使用,打包时直接链接进来了;

终于知道包怎么回事了,下面就可以在项目中愉快的使用了,不知道怎么用?不知道有什么功能?都没关系,直接去文档描述及示例,用了几次自然就熟悉了。