我开始在所有print语句中看到此警告。
print
print('Foo'); // Warning: Avoid `print` calls in production code.
bxpogfeg1#
应改用debugPrint();
debugPrint();
t9eec4r02#
这是因为flutter_lints包被隐式添加到Flutter 2.3.0之后创建的新项目中。您可以使用下列任一解决方案。1.要删除该行中的警告,请执行以下操作:
flutter_lints
// ignore: avoid_print print('Hello World');
1.若要移除该档案中的警告
// ignore_for_file: avoid_print print('Hello World');
1.从整个项目中删除警告。打开analysis_options.yaml文件并添加以下liter规则:
analysis_options.yaml
include: package:flutter_lints/flutter.yaml linter: rules: avoid_print: false
7uzetpgm3#
开发人员不应抑制此类分析器警告,也不应将print()用于他们正在构建的应用。print()也会在发布版本中打印日志,这是不应发生的事情,因为一些开发人员可能会记录敏感信息。其他人建议的debugPrint()只是print()的一个 Package 器,以避免在Android上丢失一些日志,以防print()函数调用太频繁或输出太大。应该使用dart.developer中提供的log()函数,该函数还允许附加所记录事件的错误对象、严重性级别、名称等,并且不会在发布模式下打印任何内容,因此不会泄漏任何信息。以下是有关正确日志记录方法的详细信息,其中还介绍了log()函数:https://docs.flutter.dev/testing/code-debugging#logging
print()
debugPrint()
dart.developer
log()
5f0d552i4#
如果您要打印大量日志以进行调试,最好使用debugPrint(String),如this answer中所述。打印大量行有时会导致Android内核在您达到极限时删除某些行。如果您的用例确实需要使用print(String),那么添加avoid_print的lint检查是正确的,因为它似乎默认设置为true。
debugPrint(String)
print(String)
avoid_print
2w3rbyxf5#
其他答案有助于避免警告,但为什么会出现此警告以及如何修复它?使用print方法使您的日志在使用flutter logs命令时可供用户使用,因此如果您记录任何危险的敏感数据,debugPrint是否解决了此问题并仅在调试模式下打印?答案是否定的,默认情况下不会。但是debugPrint的优点是,您可以覆盖它的行为,使其不在发行模式下打印,
flutter logs
debugPrint
void main() { if (kReleaseMode) { debugPrint = (String message, { int wrapWidth }) {} // } }
ttvkxqim6#
将所有print(替换为logPrint(创建新函数
print(
logPrint(
logPrint(String s){print(s);}
您可以在一行中注解所有打印命令
k0pti3hp7#
2022年空安全工作版本:
import 'package:flutter/foundation.dart'; void main() async { if (kReleaseMode) { debugPrint = (String? message, {int? wrapWidth}) => ''; }
7条答案
按热度按时间bxpogfeg1#
应改用
debugPrint();
t9eec4r02#
这是因为
flutter_lints
包被隐式添加到Flutter 2.3.0之后创建的新项目中。您可以使用下列任一解决方案。
1.要删除该行中的警告,请执行以下操作:
1.若要移除该档案中的警告
1.从整个项目中删除警告。
打开
analysis_options.yaml
文件并添加以下liter规则:7uzetpgm3#
开发人员不应抑制此类分析器警告,也不应将
print()
用于他们正在构建的应用。print()
也会在发布版本中打印日志,这是不应发生的事情,因为一些开发人员可能会记录敏感信息。其他人建议的
debugPrint()
只是print()
的一个 Package 器,以避免在Android上丢失一些日志,以防print()
函数调用太频繁或输出太大。应该使用
dart.developer
中提供的log()
函数,该函数还允许附加所记录事件的错误对象、严重性级别、名称等,并且不会在发布模式下打印任何内容,因此不会泄漏任何信息。以下是有关正确日志记录方法的详细信息,其中还介绍了
log()
函数:https://docs.flutter.dev/testing/code-debugging#logging5f0d552i4#
如果您要打印大量日志以进行调试,最好使用
debugPrint(String)
,如this answer中所述。打印大量行有时会导致Android内核在您达到极限时删除某些行。如果您的用例确实需要使用
print(String)
,那么添加avoid_print
的lint检查是正确的,因为它似乎默认设置为true。2w3rbyxf5#
其他答案有助于避免警告,但为什么会出现此警告以及如何修复它?使用
print
方法使您的日志在使用flutter logs
命令时可供用户使用,因此如果您记录任何危险的敏感数据,debugPrint
是否解决了此问题并仅在调试模式下打印?答案是否定的,默认情况下不会。但是debugPrint
的优点是,您可以覆盖它的行为,使其不在发行模式下打印,ttvkxqim6#
将所有
print(
替换为logPrint(
创建新函数
您可以在一行中注解所有打印命令
k0pti3hp7#
2022年空安全工作版本: