dart系列之:在dart中使用packages

简介: dart系列之:在dart中使用packages

目录



简介


java中使用jar包来封装有用的功能,然后将其分发到maven仓库中,供其他人使用。同样的在dart中也有类似的概念叫做packages。packages就是可以用来共享的软件包,可以包含libraries和tools。


你可以在pub.dev网站中查到dart中所有的共享packages的信息。 那么怎么在一个dart项目中使用这些packages呢?


pubspec.yaml


简单点讲,一个dart的package就是包含pubspec.yaml的目录。pubspec.yaml是一个描述文件,用来表明该package的元信息,包括当前package的名字,版本号和依赖信息等。


要想使用pub.dev上的packages,只需要在pubspec.yaml引入对应的依赖即可。


我们举个例子:


name: app2
description: a demo app
version: 1.0.0+1
environment:
  sdk: ">=2.7.0 <3.0.0"
dependencies:
  image_picker: ^0.6.7+22
  video_player: ^0.10.12+5


这里我们的引入了两个依赖包,分别是image_picker和video_player。


get packages


当我们修改了pubspec.yaml之后,其实对应的package并没有下载到本地来,还需要通过下面的命令来下载对应的packages:


cd <path-to-my_app>
 dart pub get


dart pub get会根据pubspec.yaml中配置的内容下载对应的包,并放置在系统缓存中。


在Mac或者Linux系统中,这个缓存目录的地址是:~/.pub-cache,在windows中这个目录地址是:%LOCALAPPDATA%\Pub\Cache。


当然,你也可以通过设置PUB_CACHE来更换这个地址。


如果你依赖的包又依赖其他的包的话,其他依赖包也会被下载下来。


当下载完依赖包之后,dart会在 .dart_tool/目录中创建一个 package_config.json文件,用来表示当前项目和系统缓存包的映射关系。


使用packages


万事俱备,只欠东风。现在包也有了,剩下就是使用了。


使用libary可以用关键字import。如果是dart SDK中的包,则以dart:开头:


import 'dart:html';


如果是第三方包,则以package: 开头:


import 'package:test/test.dart';


引入的libary还可以被重命名:


import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// Uses Element from lib1.
Element element1 = Element();
// Uses Element from lib2.
lib2.Element element2 = lib2.Element();


还可以使用show和hide引入部分library:


// Import only foo.
import 'package:lib1/lib1.dart' show foo;
// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;


默认情况下,引入的包是初始加载的,如果某些包特别大,或者你想要在使用的时候再进行加载,则可以使用deferred关键字进行延时加载:


import 'package:greetings/hello.dart' deferred as hello;


在使用的时候,需要显示调用loadLibrary() 方法,来加载对应的library:


Future<void> greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}


升级依赖


在第一次运行dart pub get 之后,dart会创建一个pubspec.lock文件,用来锁定依赖包的版本号,如果是在团队协作中,这个lock文件是特别有用的,它可以保证团队中所有成员使用的都是同一个版本的依赖包。


当你想升级对应的依赖的时候,可以使用dart pub upgrade命令,对依赖包进行升级。


dart pub upgrade会根据最新的可用包来生成最新的lock文件。


当然,你也可以指定升级某个特定的依赖包:


dart pub upgrade image_picker


要想查看最新依赖包的最新版本,可以使用:


dart pub outdated


总结



以上就是dart中packages的使用。

相关文章
|
数据可视化 索引
数据可视化之antv/g6 元素之边(edge)
数据可视化之antv/g6 元素之边(edge)
2243 0
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3模型升级、字节GR-3机器人、TRAE SOLO、JoyAgent OxyGent京东智能体框架、智谱Z.ai炫酷PPT制作
AI Compass前沿速览:Qwen3模型升级、字节GR-3机器人、TRAE SOLO、JoyAgent OxyGent京东智能体框架、智谱Z.ai炫酷PPT制作
AI Compass前沿速览:Qwen3模型升级、字节GR-3机器人、TRAE SOLO、JoyAgent OxyGent京东智能体框架、智谱Z.ai炫酷PPT制作
|
安全 JavaScript
如何在`package.json`中正确设置依赖版本范围?
正确设置 `package.json` 中的依赖版本范围需要综合考虑项目的需求、依赖库的稳定性和兼容性,以及开发和维护的便利性等因素。通过合理选择版本范围符号,并结合定期的审查和测试,可以有效地管理项目依赖,确保项目的稳定运行。
439 1
|
11月前
|
人工智能 自然语言处理 算法
打破AI信息差:2024年20款好用的人工智能工具大盘点
本文带你了解20款值得一试的AI工具,帮助你在内容创作、图像设计、音频视频编辑等领域提高效率、激发创意。
1666 1
打破AI信息差:2024年20款好用的人工智能工具大盘点
|
前端开发
灯光效果,触手可及:CSS动画让网页设计更出彩!
灯光效果,触手可及:CSS动画让网页设计更出彩!
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
761 6
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
1085 0
|
人工智能 JSON 监控
探索Viper-适用于GoLang的完整配置解决方案
探索Viper-适用于GoLang的完整配置解决方案
【node】 cnpm|npm查看、修改镜像地址操作 换源操作
【node】 cnpm|npm查看、修改镜像地址操作 换源操作
4713 1
|
数据可视化
数据可视化之antv/g6 节点、及自定义节点
数据可视化之antv/g6 节点、及自定义节点
4674 0