Flutter:关于如何 configure/build 使用单个私有 "core" library/package 的多个应用程序的最佳实践是什么?

Flutter: What is best practice for how to configure/build multiple apps that use a single private "core" library/package?

我在这里和其他地方进行了大量搜索,但没有找到明确的答案...

我有两个应用程序,它们将共享相当多的功能并访问相同的云数据,但仍然截然不同。一个类似的 public 例子是优步:一个应用程序用于 driver,一个应用程序用于乘客。他们的应用程序共享许多核心功能。我认为拥有一个整体应用程序根据用户类型呈现两种截然不同的用户体验和功能集是没有意义的……或者是吗?这种方法的主要 advantages/disadvantages 是什么?

我不太确定,但对我来说,拥有两个独立的应用程序似乎更明智,它们导入一个“核心”库,其中包含两个应用程序共有的元素(一些数据模型,一些 UI小部件等)。在这种情况下如何构建这两个应用程序?我可以从一个 Flutter 项目构建这两个项目,还是我需要为每个应用程序创建单独的项目?

  1. 如果从单个项目构建,如何配置它以构建两个不同的应用程序? (使用口味似乎不适合这个;我已经为每个应用程序构建了多种口味:DEV/TEST/PROD)
  2. 如果从单独的项目构建,为核心库添加一个额外的(第三个)单独项目似乎应该很简单,可以 built/saved 到私有 GitHub 存储库。我读过,由于 pub 缓存包的方式,将核心库放在一个单独的 repo 中可能 problematic/inconvenient。这仍然是真的吗?是否像在单个存储库中为三个不同的项目指定单独的文件夹一样简单?此配置还有其他需要考虑的事项吗?

我找到的解决方案是使用 melos 包在 mono-repo 中设置我的项目。

这允许我为我的每个应用程序和我的每个库拥有单独的顶级目录(在我的 project/repo 中)。 melos 的顶级配置文件列出了它们中的每一个,并且 melos 使库成为应用程序的 'visible'。这是一个满足我需求的巧妙而简单的解决方案。