1️⃣包介绍
使用包可以创建可轻松共享的模块化代码。 最小包装包括:
pubspec.yaml文件:声明包名称,版本,作者等的元数据文件。
包含程序包中的公共代码的lib目录,最少包含一个 .dart文件。
2️⃣包类型
包可以包含几种内容:
Dart包:用Dart编写的常规包,例如路径包。 其中一些可能包含Flutter特定功能,因此对Flutter框架具有依赖性,仅将其用于Flutter,例如fluro包。
插件包:一个专门的Dart包,其中包含用Dart代码编写的API,以及针对Android(使用Java或Kotlin)和/或iOS(使用ObjC或Swift)的平台特定实现。 一个具体的例子是电池插件包。
3️⃣开发Dart包
第1步:创建包
要创建一个Dart包,可以使用--template = package标志并使用flutter create:
第2步:实施包装
对于纯Dart包,只需在主lib / <包名称> .dart文件或lib目录中的多个文件中添加该功能即可。
要测试软件包(单元测试 、
1单元测试测试单个函数,方法或类。被测单元的外部依赖性通常使用例如package:mockito来嘲笑。单元测试通常不会读取/写入磁盘,渲染到屏幕,也不会从运行测试的进程外部接收用户操作。单元测试的目标是在各种条件下验证逻辑单元的正确性。
2小部件测试(在其他UI框架中称为组件测试)测试单个小部件。测试小部件涉及多个类,并且需要提供适当的小部件生命周期上下文的测试环境。例如,它应该能够接收和响应用户操作和事件,执行布局,并实例化子窗口小部件。小部件测试因此比单元测试更全面。然而,就像一个单元测试一样,一个小部件测试的环境被一个比完整的UI系统简单得多的实现所取代。小部件测试的目标是验证小部件的UI看起来和按预期进行交互。
3集成测试测试完整的应用程序或应用程序的大部分。通常,集成测试可以在真实设备或OS仿真器上运行,例如iOS Simulator或Android Emulator。被测试的应用程序通常与测试驱动程序代码隔离,以避免结果偏差。集成测试的目标是验证应用程序作为一个整体正确运行,它所组成的所有小部件按照预期相互集成。您还可以使用集成测试来验证应用的性能。),请在测试目录中添加单元测试。
有关如何组织包内容的更多详细信息,请参阅Dart库包文档。
4️⃣开发插件包
如果你想开发一个调用特定于平台的API的包,你需要开发一个插件包。插件程序包是Dart程序包的专用版本,除上述内容外,还包含针对Android(Java或Kotlin代码),针对iOS(Objective-C或Swift代码)编写的特定于平台的实现,或针对两者。 API使用平台通道连接到特定于平台的实现。
第1步:创建包
要创建一个插件包,请在创建时使用--template = plugin标志。
使用--org选项来指定您的组织,并使用反向域名表示法。该值用于生成的Android和iOS代码中的各种包和包标识符。
$ flutter create --org com.example --template = plugin hello
第2步:实施包装
由于插件包中包含用几种编程语言编写的几个平台的代码,因此需要一些特定的步骤来确保顺畅的体验。
步骤a:添加iOS平台代码(.h + .m / .swift)
我们建议您使用Xcode编辑iOS代码。
在编辑Xcode中的iOS平台代码之前,首先确保代码至少已构建过一次(即,从IDE /编辑器或终端运行示例应用程序执行
cd hello/example;
flutter build ios --no-codesign
然后,
启动Xcode
选择'文件>打开',然后选择hello / example / ios / Runner.xcworkspace文件。
您的插件的iOS平台代码位于Pods / Development中
Pods / hello / Classes /在Project Navigator中。
5️⃣ 添加文档
建议将以下文档添加到所有软件包:
一个介绍软件包的README.md文件
CHANGELOG.md文件记录每个版本中的更改
许可证文件,其中包含许可证包的条款
所有公共API的API文档(详情见下文)
6️⃣发布软件包
https://pub.dartlang.orgflutter 插件官网
7️⃣处理包相互依赖性
![](https://img.haomeiwen.com/i5639324/0247f7793b08278d.png)
这两种方式与您在Flutter应用程序或任何其他Dart项目中包含的软件包没有什么不同。
但是,如果自己的项目也碰巧是一个插件包,其平台特定的代码需要访问url_launcher公开的特定于平台的API,则还需要将适当的依赖声明添加到特定于平台的构建文件中,如下所示。
![](https://img.haomeiwen.com/i5639324/086cf3748640b3a5.png)
网友评论