flutter 避免在产品代码中调用print,(文档)

e3bfsja2  于 2022-11-30  发布在  Flutter
关注(0)|答案(7)|浏览(323)

我开始在所有print语句中看到此警告。

print('Foo'); // Warning: Avoid `print` calls in production code.
bxpogfeg

bxpogfeg1#

应改用debugPrint();

t9eec4r0

t9eec4r02#

这是因为flutter_lints包被隐式添加到Flutter 2.3.0之后创建的新项目中。
您可以使用下列任一解决方案。
1.要删除该行中的警告,请执行以下操作:

// ignore: avoid_print
print('Hello World');

1.若要移除该档案中的警告

// ignore_for_file: avoid_print
print('Hello World');

1.从整个项目中删除警告。
打开analysis_options.yaml文件并添加以下liter规则:

include: package:flutter_lints/flutter.yaml

linter:
  rules:
    avoid_print: false
7uzetpgm

7uzetpgm3#

开发人员不应抑制此类分析器警告,也不应将print()用于他们正在构建的应用。print()也会在发布版本中打印日志,这是不应发生的事情,因为一些开发人员可能会记录敏感信息。
其他人建议的debugPrint()只是print()的一个 Package 器,以避免在Android上丢失一些日志,以防print()函数调用太频繁或输出太大。
应该使用dart.developer中提供的log()函数,该函数还允许附加所记录事件的错误对象、严重性级别、名称等,并且不会在发布模式下打印任何内容,因此不会泄漏任何信息。
以下是有关正确日志记录方法的详细信息,其中还介绍了log()函数:https://docs.flutter.dev/testing/code-debugging#logging

5f0d552i

5f0d552i4#

如果您要打印大量日志以进行调试,最好使用debugPrint(String),如this answer中所述。打印大量行有时会导致Android内核在您达到极限时删除某些行。
如果您的用例确实需要使用print(String),那么添加avoid_print的lint检查是正确的,因为它似乎默认设置为true。

2w3rbyxf

2w3rbyxf5#

其他答案有助于避免警告,但为什么会出现此警告以及如何修复它?使用print方法使您的日志在使用flutter logs命令时可供用户使用,因此如果您记录任何危险的敏感数据,debugPrint是否解决了此问题并仅在调试模式下打印?答案是否定的,默认情况下不会。但是debugPrint的优点是,您可以覆盖它的行为,使其不在发行模式下打印,

void main() {
  if (kReleaseMode) {
    debugPrint = (String message, { int wrapWidth }) {} //
  }
}
ttvkxqim

ttvkxqim6#

将所有print(替换为logPrint(
创建新函数

logPrint(String s){print(s);}

您可以在一行中注解所有打印命令

k0pti3hp

k0pti3hp7#

2022年空安全工作版本:

import 'package:flutter/foundation.dart';

void main() async {
   if (kReleaseMode) {
    debugPrint = (String? message, {int? wrapWidth}) => '';
  }

相关问题