首页 > 解决方案 > 如何在 onPressed 上制作三元运算符

问题描述

我正在运行与下面的代码类似的代码

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

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

下面的 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),

我收到错误:类型“未来”不是类型“(()=> void)的子类型?”

标签: flutterif-statementbuttonnavigationdialog

解决方案


读取{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);
},

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


推荐阅读