dart系列之:创建Library package-阿里云开发者社区

开发者社区> 公众号:程序那些事> 正文

dart系列之:创建Library package

简介: 在dart系统中,有pubspec.yaml文件的应用就可以被成为一个package。而Libray package是一类特殊的package,这种包可以被其他的项目所依赖. 也就是通常所说的库。 如果你也想你写的dart程序可以上传到pub.dev上,或者提供给别人使用,则来看看这篇文章吧。
+关注继续查看

简介

在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/

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10076 0
创建完全可编辑的 DataGrid
在论坛中我看到过许多相同或相似的问题:我怎样在我的DataGrid的每一行中放置检查框、文本框等等?怎样更新它们的值?答案相当简单,在这篇文章中,我将向你展示如何完成它。   我们都知道,DataGrid是一个功能非常强大的工具。
585 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13884 0
创建SinaSAE云账号创建和发布基于SVN代码管理的PHP空工程
1、使用Sina微博账号登录,进入【新浪云控制台】 2、选择【云应用SAE】界面,选择【创建新应用】 3、点击【继续创建】,进入应用信息编辑界面     依次编辑“二级域名”“应用程序名”,再点【运行环境】中的【PHP空应用】,再点左下角的【创建应用】完成应用创建。
846 0
node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的信息填写后会出现这样一段话.
787 0
+关注
公众号:程序那些事
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!
277
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载