【问题标题】:Flutter: when to use `print` and `debugPrint`?Flutter:何时使用`print`和`debugPrint`?
【发布时间】:2021-06-24 17:03:47
【问题描述】:

在使用printdebugPrint时有些混淆,所以有些说法可能是错误的,应该澄清一下:

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

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

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

【问题讨论】:

    标签: flutter


    【解决方案1】:
    1. 和 3. 如果您使用命令flutter logs,您将在手机/模拟器中安装的所有应用程序中看到打印功能的输出。这意味着即使应用处于发布模式,它仍然会在终端打印。
    2. debugPrint 一般用于避免每个操作系统的打印限制,如果使用默认的debugPrintThrottled 回调。它也可以在生产中打印,但您可以将其自定义为仅在开发模式下工作:
    void main() {
        bool isInRelease = true;
    
        assert(() {
          isInRelease = false;
          return true;
        }());
    
        if (isInRelease) {
          debugPrint = (String? message, {int? wrapWidth}) {};
        }
    }
    

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

    【讨论】:

    • 上面在发布模式下覆盖 debugPrint 的例子是一个很好的解决方案。另一种使用更少代码的方法是导入 flutter/foundation.dart 并检查 kReleaseMode。例如:if (kReleaseMode) { debugPrint = (String? message, { int? wrapWidth }) {}; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2021-12-16
    • 1970-01-01
    • 2020-12-23
    • 2020-04-25
    • 2018-12-27
    相关资源
    最近更新 更多