我正在尝试创建一个dart软件包/插件,可用于在Android,iOS和Web上运行的示例dart应用程序。问题是,我想使用的一个包(我称之为“X”包)只兼容Android和iOS --X包不支持Web平台。如果我尝试在Web上运行应用程序,我会收到大量与软件包X的平台兼容性相关的错误消息。
但问题是我还编写了一个完全基于dart的库,它可以完成包X所做的90%的工作,并且可以在Web上运行。所以我有个选择:
1.我可以简单地为所有3个平台使用我的dart包(而不是包X),然后所有3个平台将拥有90%的所需功能。
1.我可以在Android和iOS上使用X包,在Web上使用MY库。在Android和iOS上运行的应用程序将具有“完整功能”,而在Web上运行的应用程序将具有90%的功能。
我想知道如何实现上面的选项2。我曾经尝试过联邦插件--但那些插件似乎实际上是针对不同平台使用本机代码--我对这样做不感兴趣。我不需要调用用其他语言编写的代码。同样,包X用dart编写。一旦我将包X作为依赖项放入pubspec.yaml
文件中,Web上的部署就会出错。理想情况下,应该有一种方法可以为不同的平台指定不同的dart依赖项。
有没有一种方法可以创建一个软件包,为一组平台(iOS和Android)加载/导入/使用一个dart软件包,并为另一个平台(Web)加载/导入/使用不同的dart库?
2条答案
按热度按时间czq61nw11#
你可以用一个“monorepo”来做这件事,它是多个包的仓库。
将所有与平台无关的逻辑放入一个私有的“common”包中(包括所有针对公共逻辑的测试)。
然后创建相邻的包,控制每个平台使用公共包中的内容,以及该平台的其他特定代码。
这些monorepos可以直接使用pub中的“melos”工具进行管理。
4xrmg8kj2#
看看这篇文章:
Conditional Importing - How to compile for all platforms in Flutter