dart 徽章上的三元运算符,仅在有新消息时显示徽章

xmq68pz9  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(112)

可能是个简单的问题
我正尝试只在有未读消息时才在聊天屏幕上显示徽章图标。
标记的默认数量已设置为“0”。
如何编写三元运算符,使其在没有未读消息时甚至不出现,而仅在至少有一条未读消息时才出现?
问题我有,徽章出现,即使未读邮件为零(嵌入在下面的链接):


的数据

new Container(
                margin: new EdgeInsets.symmetric(horizontal: 5.0),
                child: new InkWell(
                    child: new Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        crossAxisAlignment: CrossAxisAlignment.center,
                        children: <Widget>[
                      new Badge(
                          badgeColor: Colors.green[300],
                          badgeContent: Padding(
                            padding: const EdgeInsets.only(left: 3.0, right: 3),
                            child: Text('${badges ?? ''}' == 0
                                ? ''
                                : '${badges ?? ''}'),
                          ))
                    ]))),

字符串

edqdpe6u

edqdpe6u1#

badges > 0
? new Container(
    margin: new EdgeInsets.symmetric(horizontal: 5.0),
    child: new InkWell(
      child: new Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          new Badge(
            badgeColor: Colors.green[300],
            badgeContent: Padding(
              padding: const EdgeInsets.only(left: 3.0, right: 3),
              child: Text('$badges'),
            ),
          ),
        ],
      ),
    ),
  ),
: CustomWidget() //Return what you want here

字符串
您可以嵌套三元运算符,将条件放在更深的小部件上。

wlsrxk51

wlsrxk512#

基本上,你有一个逻辑,将检查badges是否等于'0',然后只返回一个空容器

children: <Widget>[
   (badges == '0') ? Container() : Badge( ... ),
]

字符串

46qrfjad

46qrfjad3#

(badges == null) 
? new Container(
    margin: new EdgeInsets.symmetric(horizontal: 5.0),
    child: new InkWell(
      child: new Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          new Badge(
            badgeColor: Colors.green[300],
            badgeContent: Padding(
              padding: const EdgeInsets.only(left: 3.0, right: 3),
              child: Text('$badges'),
            ),
          ),
        ],
      ),
    ),
  ),
: CustomWidget()

字符串
成功了谢谢
badge被初始化为一个int,上面是0

w51jfk4q

w51jfk4q4#

简单解决方案isLabelVisible:false

相关问题