只是想提高对这种潜在的令人困惑的错误的认识。这个问题有点用词不当,因为 Flutter 打印机制没有任何问题。
打印到控制台是许多开发人员尝试做的第一件事来调查此问题,但打印也不会执行。调试断点也不会被命中。
看到以下代码有什么问题会阻止其打印到控制台吗?这是有效的语法并且可以很好地编译。
TextButton(
child: Text("Press me"),
onPressed: () => () {
debugPrint("I printed to the debug console!");
},
),
原始代码的问题归结为表达式体和块体之间的混淆。 函数被传递到表达式主体,而不是定义函数。
因此,当
onPressed
执行=>
之后的代码时,它仅执行定义块体。事实上,您可以通过在大括号末尾添加 ()
来使其工作,因为这会在定义块体后调用它,但这有点像 Rube Goldberg 机器。下面列出了更好的解决方案;以下任一方法都是有效的编写方法。
您将要执行的内容(定义)放在
=>
之后
TextButton(
child: Text("Press me"),
onPressed: () => debugPrint("I printed to the debug console!"),
),
将要执行的内容(定义)放在大括号内,其中包含多行,每行以分号结尾。
TextButton(
child: Text("Press me"),
onPressed: () { debugPrint("I printed to the debug console!"); },
),