当我到达“R”进行热重载时,我不小心按下了终端中的“T”键,并且总是打印我的应用程序的小部件树,并且需要几分钟才能完成,所以这让我非常恼火。如果可能,我真的需要关闭此功能,但我不知道如何关闭。
域名注册地址:
注释掉第 1285 - 1291 行
flutter/packages/flutter_tools/lib/src/resident_runner.dart
在本地 flutter git repo 中提交更改,“t”将被禁用。
这发生在里面
flutter/packages/flutter_tools/lib/src/resident_runner.dart
在
Future<bool> _commonTerminalInputHandler(String character)
方法。
在这里处理
case 't':
case 'T':
if (residentRunner.supportsServiceProtocol) {
await residentRunner.debugDumpRenderTree();
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
supportsServiceProtocol如果应用程序处于调试或配置文件模式,则唯一的检查是否在getter 中返回 true。
如果该检查为真,则在 VirtualMachine 中调用该方法
Future<Map<String, dynamic>> flutterDebugDumpRenderTree() {
return invokeFlutterExtensionRpcRaw('ext.flutter.debugDumpRenderTree');
}
Run Code Online (Sandbox Code Playgroud)
并处理输出。所以不幸的是,你不能在不更改颤振源代码的情况下禁用它。
幸运的是,更改 flutter 源代码非常容易。
进入内部flutter/packages/flutter_tools/lib/src/resident_runner.dart并注释掉您不想触发的案例。
case 'S':
if (residentRunner.supportsServiceProtocol) {
await residentRunner.debugDumpSemanticsTreeInTraversalOrder();
return true;
}
return false;
// case 't':
// case 'T':
// if (residentRunner.supportsServiceProtocol) {
// await residentRunner.debugDumpRenderTree();
// return true;
// }
// return false;
Run Code Online (Sandbox Code Playgroud)
所以你已经成功地改变了颤振源。现在您需要重建颤振工具。
为此,您可以遵循开发人员文档:
如果您想更改和重新测试工具本身的行为,请在 git 中本地提交您的工具更改,
packages/flutter_tools下次运行 flutter 时,该工具将从 Dart 源重新构建。或者,删除该bin/cache/flutter_tools.snapshot文件。这样做将在您下次运行 flutter 时强制从您的本地源重新构建该工具。
简单来说,在 flutter root 中打开终端并提交您的更改。下次运行时,flutter run您将在终端中看到消息输出:
Building flutter tool...
当您要升级 flutter 时,运行git pull --rebase,您的更改将被保存。
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |