Как можно использовать оператор if с виджетом контейнера во флаттере - PullRequest
1 голос
/ 04 августа 2020

Я хочу использовать оператор if с виджетом-контейнером, подобный этому коду:

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    {
      Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
     ),
}

Но возникает ошибка:

The element type 'Set<Container>' can't be assigned to the list type 'Widget'

есть ли способ исправить эту ошибку? *

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Фигурные скобки не должны использоваться, если if statement находится внутри виджета флаттера

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
      Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
   ),

Вышеупомянутое должно работать нормально

Если это произойдет, у вас есть if else statement , вы по-прежнему не будете использовать фигурные скобки, просто удалите , в конце первого виджета

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    Container(
       width: 0.23 * size,
       height: 0.23 * size,
       child: Image.asset('assets/images/days/day4k.png'),
    ) //no comma here
else
    Container(), //comma here

Кроме того, если у вас есть оператор else if, вы также должны подойти к нему так же

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)
    Container(
       width: 0.23 * size,
       height: 0.23 * size,
       child: Image.asset('assets/images/days/day4k.png'),
    ) //no comma here
else if (condition here)
    Container() //no comma here
else
    Container(), //comma here
0 голосов
/ 04 августа 2020

Должно работать:

if (int.parse(m_id) > int.parse(cm_id) || int.parse(d_id) > 4)...[
    Container(
         width: 0.23 * size,
         height: 0.23 * size,
         child: Image.asset('assets/images/days/day4k.png'),
     ),
]
...