Флаттер - я пытаюсь напечатать текстовое поле в соответствии с ответом API - PullRequest
1 голос
/ 13 января 2020

У меня есть API, который возвращает некоторые данные. В моем API есть группа данных с именем addonCat,

. Мне нужно проверить значение этого ключа addonCat с помощью if и отобразить текстовое поле, если это не нуль ..

Я кодировал что-то вроде этого

Text(dish.addonCat == null ? " " : "Available",
  style: TextStyle(
    color: Colors.red, 
    fontSize: 14
  ),
)

addonCat, объявленного как final List addonCat; в классе pojo.

Вот как я получаю значение из ответа addonCat: json['addonCat']

Теперь текстовое поле отображается для всех данных API.

Что я делаю неправильно, любые предложения будут полезны.

Ответы [ 2 ]

2 голосов
/ 13 января 2020

В идеале вы бы не помещали пустой текстовый виджет, поскольку это дороже, чем просто иметь SizedBox, который является самым простым виджетом, который вы можете иметь, все еще занимая место в вашем дереве. Вы бы реализовали это так:

dish.addonCat == null || dish.addonCat.isEmpty
  ? SizedBox(width: 0, height: 0),
  : Text("Available",
    style: TextStyle(
      color: Colors.red, 
      fontSize: 14
    ),
  ),
1 голос
/ 13 января 2020

Вам нужно только проверить это в правильном направлении поэтому вместо null проверьте, является ли это пустым списком, как это ..

Text(dish.addonCat.toString() != '[]' ? " " : "Available",
  style: TextStyle(
    color: Colors.red, 
    fontSize: 14
  ),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...