总的来说,我知道如何使用git子模块和递归克隆和拉取。但是自从我搬到flutter后,很多问题都被提出来了,并且找不到明确的答案,如果你们能帮忙的话:
- 子模块也应该是Flutter项目吗?
- 它有自己的pubspec.yml吗?如果有,我应该总是确保它们与版本一致吗?如果在子模块和父模块中使用相同的包怎么办?
- flutter pub是否在每个模块中都是必需的?或者在顶层运行它会递归地执行它?
- 子模块是否必须与lib/main. dart等具有相同的结构?不能只作为目录使用?lib/main. dart可以被删除吗?
- 在我的例子中,子模块不是子应用,只是包含了多个应用之间的公共代码,但是flutter项目本身就是应用,对吗?会不会有冲突?
- 我知道flutter包,但在我的例子中,我更喜欢使用子模块
先谢了!
1条答案
按热度按时间kfgdxczn1#
长话短说,模块化Flutter项目的“简单方法”并不多。
如果你想做“vanilla”,你应该把代码的模块导出为库,并把它作为依赖项添加到你的项目中。
You can find a example here
如果你想以一种更工业化的方式来做,有一个叫做melos的包可以帮助你构建和管理你的模块,如果你有一个很大的代码库,这是非常有用的。
这些“模块”的行为与外部库完全相同:
Provider
这样的库,则在模块和主应用中使用不同版本时可能会发生依赖项冲突(仅当存在主要版本差异时才会发生)。main.dart
,但它将是一个具有专用pubspec.yaml
的Flutter项目。如果您有Java/Kotlin/Android开发人员的背景,您可能知道在原生Android项目中,由于
gradle
,子模块的管理是可能的。由于Flutter的设计,不可能有相同的“原生”行为。