Flutter-引入第三方依赖包
flutter.jpg
实际开发中引入第三方的功能模块极为常见,也就是别人写好的、封装好的实现特定功能的操作,这里称之为“包”,也可称为“库”。几乎每个平台都有管理第三方库的功能,比如iOS用Cocoapods或Carthage来管理依赖,Node中通过npm , php使用Composer等。
Flutter中对第三方依赖的管理通过配置文件pubspec.yaml来实现的;该文件位于项目根目录下;
2-.png
我们用到的第三方写在这里:
dependencies:
flutter:
sdk: flutter
dio: ^3.0.0
cupertino_icons: ^0.1.3
比如我添加了dio网络请求的库,如上形式;具体操作如下;
1、找到我们需要的包在代码库中的名称及所需的版本号:
所有的第三方都有个仓库来保存这些东西,我们使用就得先把它找出来,这个仓库就在这里【https://pub.flutter-io.cn】,国内站点访问;常用的第三方功能都能在这找到。
pub_dev.png
比如,搜dio;
3dio.png
第一个就是我们所需的包,直接如上图1设置即可;OK,这只是开始,然后执行
flutter pub get
get.png
获取代码到本地,也就是从远程仓库下载到本地,才能正常使用。
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.cn
export PATH=/Users/uu/Desktop/flutter/sdk/bin:$PATH
在工具中却不起作用;此路不通,试试命令行操作;
MacBook-Pro dctt_flutter % flutter pub get
Waiting for another flutter command to release the startup lock...
还是报错了,上次操作未完成被锁住了,这个好处理;只要进入flutter sdk 目录,然后找到bin/cache/lockfile文件,删除后再运行命令,错误没了。
common.png
命令执行完成,此时包应该下载到本地了;pubspec.lock 文件中可以看到有包的信息;
代码中输入dio:如下有反应了,这说明包引入成功了!_!
dio2.png
3、下载的第三方包的位置
下载的代码包去哪里了,我们的项目中没有看到呀!不像iOS的那样,直接项目工程下就看到下载的代码;
顺着提示路径我们找到了这里:
path.png
居然在我们的Flutter SDK 中缓存目录里,
dio3.png
里面两个目录对应两个镜像地址,里面的包就是我们远程下载的,然后项目中直接使用,打包时直接链接进来了;
终于知道包怎么回事了,下面就可以在项目中愉快的使用了,不知道怎么用?不知道有什么功能?都没关系,直接去文档描述及示例,用了几次自然就熟悉了。
喜欢我就关注我吧,有任何问题欢迎指导,十分感谢!
- Sqlite向MySql导入数据
- 未来3年,人工智能如何影响法律行业?5位权威专家给出趋势
- Java 常见内存溢出异常与代码实现
- nginx限制上传大小和超时时间设置说明/php限制上传大小
- Unity Application Block 1.2 学习笔记
- 苹果首个自动驾驶专利到底有什么来头?
- 围棋遇上互联网:科技打开优秀传统文化未来之门
- 神经网络开始放飞自我!都是因为架构搜索新算法
- 浏览器缓存问题的解决
- nginx下目录浏览及其验证功能、版本隐藏等配置记录
- Sqlite的多表连接更新
- Enterprise Library 4.1学习笔记6----加密应用程序块
- 浅谈数据库主键策略
- nginx应用总结(1)--基础认识和应用配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
- 【一起学系列】之适配器模式:还有外观模式呢
- 【翻译】200行代码讲透RUST FUTURES (5)
- Unable to preventDefault inside passive event listener
- js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )
- EmitMapper的使用小结
- js .map方法
- 【一起学系列】之模板方法:写SSO我只要5分钟
- ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?
- 【一起学系列】之迭代器&组合:虽然有点用不上啦
- 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法
- 使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录
- scipy.stats连续分布的基本操作
- InvocationHandler中invoke方法中的第一个参数proxy的用途
- height、offsetheight、clientheight、scrollheight、innerheight、outerheight