Тернарный оператор на значках раскрывает значки только при появлении нового сообщения - PullRequest
0 голосов
/ 19 сентября 2019

может быть простой проблемой для решения.

Я пытаюсь показать значок значков на экране чата, только если есть непрочитанные сообщения.

Количество значков по умолчанию ужебыло установлено значение '0'.

Как мне закодировать троичный оператор, чтобы он даже не появлялся, если нет непрочитанных сообщений, и появлялся, только если есть хотя бы одно непрочитанное сообщение?

У меня проблема, значки появляются, даже когда непрочитанные сообщения равны нулю (встроено в следующую ссылку):

enter image description here

 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 ?? ''}'),
                          ))
                    ]))),

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

в основном у вас есть логика, которая проверит, равны ли значки значку '0', а затем просто вернет пустой контейнер

children: <Widget>[
   (badges == '0') ? Container() : Badge( ... ),
]
0 голосов
/ 19 сентября 2019
(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() 

работал.Спасибо.

значок был инициализирован как int с 0 выше

0 голосов
/ 19 сентября 2019
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

Вы можете вложить тройной оператор, чтобы поместить условие в более глубокие виджеты.

...