dart - pubspec.yaml 中的配置标志如何工作?
问题描述
我正在学习 Flutter 和 Dart。我注意到该pubspec.yaml
文件似乎包含的不仅仅是第三方库的依赖版本。例如。
# The following section is specific to Flutter.
flutter:
uses-material-design: true
我知道Dart Pub Tool定义了 的格式,pubspec.yaml
并且看起来像 Flutter 这样的框架可以pubspec.yaml
通过额外的设置来增强它,从而引发以下问题:
pubspec.yaml
设计用于提供配置标志还是仅用于提供依赖项?- Flutter 的方式是使用
pubspec.yaml
惯用的 Dart 还是独特的? pubspec.yaml
仅由pub
工具解析还是在运行时解析为通用应用程序配置文件?- Flutter 是否实现了它自己的解析器
pubspec.yaml
并在运行时提供类似的设置uses-material-design: true
?
解决方案
pubspec.yaml 是设计用于提供配置标志还是仅用于提供依赖项?
从历史上看,它还包含纯 Dart 项目中的构建设置。例如用于编译为 JS 的设置,但已移至build.yaml
. 请参阅https://github.com/dart-lang/build/blob/master/build_config/README.md
Flutter 的方式是使用
pubspec.yaml
惯用的 Dart 还是独特的?
这是 Flutter 独有的。
Flutter 是否为 pubspec.yaml 实现了自己的解析器并
uses-material-design: true
在运行时提供类似的设置?
是的。
但是,这些设置是构建时设置,而不是运行时设置。
实际上,我发现这个文件混淆了不同的目的是相当不幸的。在 Flutter 早期,特定于 Flutter 的设置位于不同的文件中,但这也造成了一些困难(不知道细节 - 只在 GitHub 讨论中看到它),因此他们将其与pubspec.yaml
.
推荐阅读
- java - Netbeans 12.0 + Payara micro 5 + OpenJDK 11 不部署war文件
- php - 提取 tar.xz 不会输出文件 PHP
- thingsboard - 遥测被拆分
- python - Python 运行特定的烧瓶程序,直到点击另一个按钮
- python - 通过不确定性使用权重进行特征选择
- prisma - 使用 Prisma 检查对象所有权
- java - 在 MongoDB java 驱动程序中,如果可选的 `ClientSession` 为空,方法会产生错误吗?
- c# - 在单击事件中选中复选框的问题
- java - 无法通过将 args 传递给 main 方法来调试 Java 应用程序
- android - 为什么不通过惰性应用在片段中?