gpt4 book ai didi

flutter - 如何在 flutter CLI 中禁用小部件树打印(不小心按 "T"键很烦人)

转载 作者:行者123 更新时间:2023-12-02 11:59:02 27 4
gpt4 key购买 nike

当我到达“R”进行热重载时,我不小心按下了终端中的“T”键,并且总是打印我的应用程序的小部件树,并且需要几分钟才能完成,所以这让我非常恼火。如果可能的话,我确实需要关闭此功能,但我不知道如何关闭。

最佳答案

TLDR:

注释掉第 1285 - 1291 行

flutter/packages/flutter_tools/lib/src/resident_runner.dart

在本地 flutter git 存储库中提交更改,“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;

唯一的检查是否在 supportsServiceProtocol 中如果应用程序处于调试或配置文件模式,则 getter 返回 true。

如果该检查为真,则在 VirtualMachine 中调用该方法

  Future<Map<String, dynamic>> flutterDebugDumpRenderTree() {
return invokeFlutterExtensionRpcRaw('ext.flutter.debugDumpRenderTree');
}

并处理输出。因此不幸的是,如果不更改 flutter 源代码,您就无法禁用此功能。

幸运的是,更改 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;

至此,您已经成功更改了 flutter 源。现在您需要重建 flutter 工具。

为此,您可以关注 developer docs :

If you want to alter and re-test the tool's behavior itself, locally commit your tool change in git and the tool will be rebuilt from Dart sources in packages/flutter_tools the next time you run flutter. Alternatively, delete the bin/cache/flutter_tools.snapshot file. Doing so will force a rebuild of the tool from your local sources the next time you run flutter.

简单来说,在 flutter root 中打开终端并提交更改。下次运行flutter run时您将在终端中看到消息输出:

Building flutter tool...

当你想升级flutter时,运行git pull --rebase您的更改将被保存。

关于flutter - 如何在 flutter CLI 中禁用小部件树打印(不小心按 "T"键很烦人),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com