如何在 onPressed 上创建三元运算符

how to make ternary operator on onPressed

我是 运行 与下面的代码类似的代码

showPage 是一个布尔值。结果是一个字符串。

页面本身的操作将决定 bool 状态和字符串。

下面的 onPressed 是我所在页面的底部按钮。供用户导航。

我希望onPressed根据showPage的状态弹出不同的对话框,并打印结果。

代码如下:


onPressed: showPage? ()
{ShowDialogA(context:context); print(results);}
:{ShowDialogB(context:context); print(results);},

但是我在 ShowDialogB 之后的第一个分号处出错:'expected to find }' 有什么想法吗?

如果我删除分号并执行以下操作:


onPressed: showPage? ()
{ShowDialogA(context:context); print(results);}
:ShowDialogB(context:context),

我收到错误:类型 'Future' 不是类型 '(() => void)?'

的子类型

{ShowDialogB(context:context); print(results);} 读取为 else-ternary-result 是因为 onPressed 属性 需要一个函数,并且在您显示的代码中,只有 if-ternary-result ( (){ShowDialogA(context:context); print(results);}) 是一个正确的函数。我相信你只是忘记了 {ShowDialogB(context:context); print(results);} 之前的两个括号 (),所以你应该将其替换为 (){ShowDialogB(context:context); print(results);}

至于你的三元语法,不用担心,因为它是正确的!只需按如下方式更正您的函数:

onPressed: showPage ? () {
    ShowDialogA(context:context);
    print(results);
} : () {
    ShowDialogB(context:context);
    print(results);
},

如果它解决了您的问题,请告诉我!

您收到错误消息是因为在 else 命令中您忘记输入 ()。 试试这个:

onPressed: showPage
    ? () {
        ShowDialogA(context:context); print(results);
      }
    : () {
        ShowDialogB(context:context); print(results);
      },