Flutter 未打印到控制台的特定按钮

问题描述 投票:0回答:1

只是想提高对这种潜在的令人困惑的错误的认识。这个问题有点用词不当,因为 Flutter 打印机制没有任何问题。

打印到控制台是许多开发人员尝试做的第一件事来调查此问题,但打印也不会执行。调试断点也不会被命中。

看到以下代码有什么问题会阻止其打印到控制台吗?这是有效的语法并且可以很好地编译。

TextButton(
          child: Text("Press me"),
          onPressed: () => () {
            debugPrint("I printed to the debug console!");
          },
        ),
flutter dart debugging lambda
1个回答
0
投票

解决方案

原始代码的问题归结为表达式体块体之间的混淆。 函数被传递到表达式主体,而不是定义函数。

因此,当

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!"); },
        ),
© www.soinside.com 2019 - 2024. All rights reserved.