分享好友 编程语言首页 频道列表

dart系列之:在dart中使用packages

dart文章/教程  2023-02-09 10:160

简介

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的使用。

本文已收录于 http://www.flydean.com/09-dart-packages/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

查看更多关于【dart文章/教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
dart 命令行
   dart build 

0评论2023-02-09800

dart系列之:dart语言中的异常 dart新手的错误
目录简介Exception和ErrorThrow和catchFinally总结简介Exception是程序中的异常情况,在JAVA中exception有checked Exception和unchecked Exception。那么在dart中的情况是不是一样的呢?一起来看看吧。Exception和ErrorDart中表示异常的类有两个,分别是Excep

0评论2023-02-09867

Flutter Dart List.map() 获取下标
class HomePageState extends State{final topTitles = ['审批单', '机票列表', '客服'];final topIcons = ['assets/home/approval.png', 'assets/home/air_ticket.png', 'assets/home/service.png'];@overrideWidget bu

0评论2023-02-09779

dart系列之:dart类中的构造函数 dart 结构体
目录简介传统的构造函数命名构造函数构造函数的执行顺序重定向构造函数Constant构造函数工厂构造函数总结简介dart作为一种面向对象的语言,class是必不可少的。dart中所有的class,除了Null都继承自Object class。 要想使用dart中的类就要构造类的实例,在dart

0评论2023-02-09371

Dart语言学习(十三) Dart Mixins 实现多继承
MixinsMixins(混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现Mixins的功能。那么多个类中有相同的方法时候,会被覆盖吗?覆盖的先后是什么?class A{void a(){print("A.a()...");}}class B{void a(){print("B.a()...");}void b(){pr

0评论2023-02-09411

Flutter+Dart 聊天实例 | Flutter 仿微信界面聊天室
1、项目介绍Flutter是目前比较流行的跨平台开发技术,凭借其出色的性能获得很多前端技术爱好者的关注,比如阿里闲鱼,美团,腾讯等大公司都有投入相关案例生产使用。 flutter_chatroom项目是基于Flutter+Dart+chewie+photo_view+image_picker等技术开发的跨平

0评论2023-02-09638

Dart/Flutter 命名冲突,导致import重复,变异失败,Compiler message: is imported from both
Log:Compiler message:lib/page.dart:92:11: Error: 'showDialog' is imported from both 'package:flutter/src/material/dialog.dart' and 'package:loading/loading.dart'.showDialogvoid(^^^^^^^^^^重复导入,导致变异失败。两种解决方案:1.使用hide,把

0评论2023-02-09473

dart系列之:dart类的扩展
目录简介使用extends抽象类和接口mixins总结简介虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制。今天,和大家一起来探讨一下dart类中的继承。使用extends和JAVA一样,dart中可以定义一个父类,然后使用extends来继承

0评论2023-02-09399

更多推荐