五、Flutter开发包与插件

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️⃣处理包相互依赖性

五、Flutter开发包与插件_第1张图片

这两种方式与您在Flutter应用程序或任何其他Dart项目中包含的软件包没有什么不同。

但是,如果自己的项目也碰巧是一个插件包,其平台特定的代码需要访问url_launcher公开的特定于平台的API,则还需要将适当的依赖声明添加到特定于平台的构建文件中,如下所示。



五、Flutter开发包与插件_第2张图片

你可能感兴趣的:(五、Flutter开发包与插件)