【发布时间】:2018-12-12 15:51:48
【问题描述】:
我想使用Flutter 和Reflectable package 在跨平台(iOS、Android)项目中实现反射。为了保持二进制文件简短,这个包使用代码生成。
但是,在此包的tutorial/readme 之后,我无法生成所需的代码,在本例中为文件 main.reflectable.dart。虽然我已经达到了可以正常工作的地步,但代码生成以以下语句结束:
[INFO] Succeeded after 88ms with 0 outputs
在下面我尝试展示我所做的可重现的路径。为此,我将 Flutter 移到了不同的路径并重新安装了它,但没有在 IntelliJ IDEA 中重新安装 Flutter 插件。
如何重现/我做了什么?
I) 像往常一样在 Mac 上安装 Flutter。在命令行上:
cd ~/development
git clone -b beta https://github.com/flutter/flutter.git
export PATH=/Users/yourname/development/flutter/bin:$PATH
flutter doctor
II) 在 IntelliJ IDEA 中创建一个新的 Flutter 项目
- 选择 SDK 路径:/Users/yourname/development/flutter
- 选择项目位置:~/gitroot/PlayGround/reflectable_test_2
- 将目录 entry_point 添加到 lib 目录中
- 在目录entry_point中添加dart文件main.dart
- 从https://github.com/dart-lang/reflectable 的main.dart 中获取main.dart 的内容(很多会显示为红色)
- 从 lib 目录中删除 main.dart(未选中“安全删除”和“在 cmets 中搜索”)
- 删除测试目录下的widet_test.dart
- 在依赖项下的 pubspec.yaml 中添加“reflectable: any”
- 在 main.dart 中,单击运行,然后在即将出现的对话框中将入口点设置为 /Users/yourname/gitroot/PlayGround/reflectable_test_2/entry_point/main.dart
加载依赖项后,一些红色的摆动会消失,但“import 'main.reflectable.dart';”中的摆动不会消失,因为这个文件还不存在。
III) 尝试在命令行使用builder生成main.reflectable.dart:
cd /Users/yourname/gitroot/PlayGround/reflectable_test_2/
flutter packages pub run build_runner build entry_point
请注意,教程只说而不是最后一行
pub run build_runner build DIR
但使用的行确实是correct when used in a Flutter project。到目前为止,按照自述文件/教程,我得到了结果:
Package "build_runner" is not an immediate dependency.
Cannot run executables in transitive dependencies.
pub finished with exit code 65
IV) 在 IntelliJ 中,将“build_runner: any”添加到 pubspec.yaml 中的 dev_dependencies。在命令行上再次运行(flutter packages pub run build_runner build entry_point)。这导致输出:
[INFO] Generating build script...
[INFO] Generating build script completed, took 506ms
[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 776ms
[INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 3ms
[INFO] Running build...
[INFO] Running build completed, took 7ms
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 69ms
[INFO] Succeeded after 88ms with 0 outputs
总而言之,没有错误,但它也没有创建文件 main.reflectable.dart(0 个输出)。我该怎么做才能解决这个问题?
【问题讨论】:
-
您的解决方案是什么?我也有同样的问题。
-
@mohammad 我也在为此苦苦挣扎,只有在我添加了如下所示的 build.yaml 后它才对我有用,您可以从 Erik 链接到的示例存储库中复制它。或者从下面复制它,只需将 entry_point/main.dart 更改为 lib/main.dart 并保存在项目的根目录中。