简介

在dart零碎中,有pubspec.yaml文件的利用就能够被成为一个package。而Libray package是一类非凡的package,这种包能够被其余的我的项目所依赖. 也就是通常所说的库。

如果你也想你写的dart程序能够上传到pub.dev上,或者提供给他人应用,则来看看这篇文章吧。

Library package的构造

先看下library package的构造:

app3├── lib│   └── main.dart└── pubspce.yaml

这是一个最简略的Library package的构造,在root目录上面,咱们有一个pubspce.yaml文件。而后还有一个lib目录寄存的是library的代码。

一般来说lib上面的库是能够供内部进行援用的。如果是library外部的文件,则能够放到lib/src目录上面,这外面的文件示意是private的,是不应该被别的程序引入的。

如果想要将src中的包导出供内部应用,则能够在lib上面的dart文件中应用export,将须要用到的lib导出。这样其余用户只须要import这个一个文件即可。

export的例子如下:

library animation;export 'src/animation/animation.dart';export 'src/animation/animation_controller.dart';export 'src/animation/animations.dart';export 'src/animation/curves.dart';export 'src/animation/listener_helpers.dart';export 'src/animation/tween.dart';export 'src/animation/tween_sequence.dart';

下面的代码是flutter的animation库。

导入library

怎么应用呢?咱们能够应用import语句来导入对应的lib:

import 'package:flutter/animation.dart';

如果是外部文件的导入,则能够应用相对路径。只有在导入内部package的时候才须要加上package:前缀。

条件导入和导出library

因为dart是设计在能够在不同的平台上进行工作,所以一个library在不同的平台可能须要导入或者导出不同的library文件, 这就叫做条件导入和导出。

比方能够通过判断dart库是io库还是html库来抉择导出不同的文件:

export 'src/hw_none.dart' // Stub implementation    if (dart.library.io) 'src/hw_io.dart' // dart:io implementation    if (dart.library.html) 'src/hw_html.dart'; // dart:html implementation

下面的意思是,如果在app中可能应用dart:io,那么就导出src/hw_io.dart.

如果可能应用dart:html,那么就导出src/hw_html.dart,否则就导出src/hw_none.dart。

如果是条件导入的话,将export改成import即可。

增加其余无效的文件

因为不同的library有不同的作用,所以通常须要增加一些额定的文件来保障library的有效性和完整性。

为了保障library的有效性,须要增加测试代码,测试代码通常放在test目录中。

如果是创立命令行工具,则须要将对应的工具放到tools目录中。

另外还有 README.md 和 CHANGELOG.md等文件。

library的文档

dart文档能够应用 dartdoc这个工具来生成。dart中的文档格局是以///结尾的,如下:

/// The event handler responsible for updating the badge in the UI.void updateBadge() {  ...}

公布到pub.dev

一个最好共享library的形式就是将其发送到pub.dev上。具体的命令是:pub publish。

总结

以上就是dart中创立library的全部内容。

本文已收录于 http://www.flydean.com/11-dart-create-package/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

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