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

19

有一些混淆在何时使用printdebugPrint,因此存在一些可能是错误的陈述,需要澄清:

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

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

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

1个回答

33
1. 如果您使用命令flutter logs,您将在手机/模拟器上看到所有已安装应用程序的打印函数输出。这意味着即使应用程序处于发布模式,它仍将在终端中打印出来。
2. debugPrint通常用于避免每个操作系统的打印限制,如果使用默认的debugPrintThrottled回调。它也会在生产环境中打印,但您可以自定义它仅在开发模式下工作。
import "package:flutter/foundation.dart"; //allows to use kReleaseMode

void main() {

    if (kReleaseMode) {
      debugPrint = (String? message, {int? wrapWidth}) {};
    }
}

在生产环境中,当您的代码中调用debugPrint语句时,由于您给该函数传递了一个空回调函数,它将不会打印到控制台。

8
在 release 模式下覆盖 debugPrint 的示例是一个好的解决方案。另一种稍微代码量较少的方法是导入 flutter/foundation.dart 并检查 kReleaseMode。例如:if (kReleaseMode) { debugPrint = (String? message, { int? wrapWidth }) {}; } - most200

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接