flutter - 如何在 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)的子类型?”
解决方案
读取{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);
},
如果它解决了您的问题,请告诉我!
推荐阅读
- android - 如何在android中检测夏令时转换
- javascript - 如何使用堆栈导航器通过按下按钮从一个屏幕导航到另一个屏幕?
- c++ - 如何优化 C++ Parquet ReadBatch 方法
- ember.js - Ember - 使用 Django DRF (JSON API) 保存外键关系
- java - Spring JmsTemplate.setMessageId 被覆盖
- python - pytest 不接受自定义参数值
- azure - Azure 数据工厂参数/扩展属性值前导特殊字符问题
- oracle - 行返回条件后如何刷新区域?
- php - TCPDF 不使用 imageSVG 在文本文件中使用路径变量渲染点(圆圈)
- c - 在具有位置的数组中插入元素