Flutter:何时使用 `print` 和 `debugPrint`?

roz*_*rro 24 flutter

print何时使用and存在一些混乱debugPrint,因此有些陈述可能是错误的,应该澄清:

  1. 当使用直接print方法时,它会给生产带来很多垃圾,不是吗?

  2. 使用该debugPrint方法时,它只会在开发时打印,还是也会在生产中打印?

  3. 当我生成release文件(apk)时,不会删除所有print优化应用程序的调用并减少release文件大小吗?

Sim*_*Sot 35

    \n
  1. 3. 如果您使用该命令,flutter logs您将在手机/模拟器中安装的所有应用程序中看到打印功能的输出。这意味着即使应用程序处于发布模式,它仍然会在终端中打印。
  2. \n
  3. debugPrintdebugPrintThrottled如果使用默认回调,通常用于避免每个操作系统的打印限制。它也将在生产中打印,但您可以将其自定义为仅在开发模式下工作:
  4. \n
\n
import "package:flutter/foundation.dart"; //allows to use kReleaseMode\n\nvoid main() {\n\n    if (kReleaseMode) {\n      debugPrint = (String? message, {int? wrapWidth}) {};\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这样,当debugPrint代码中的语句在生产中调用时,它不会\xe2\x80\x99 被打印到控制台,因为你给了这个函数一个空的回调。

\n

  • 上面在发布模式下重写 debugPrint 的示例是一个很好的解决方案。另一种使用稍微更少的代码来完成此操作的方法是导入 flutter/foundation.dart 并检查 kReleaseMode。例如: ```if (kReleaseMode) { debugPrint = (String? message, { int?wrappWidth }) {}; }``` (9认同)