#flutter #dart #flutter-dependencies
Вопрос:
Я хочу показать два поля размера в условии if, подобном этому коду.
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Flexible(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
if (randomNumber == 1)[
SizedBox(
child: TextButton(
child: Image.asset('images/test1.jpg'),
),
),
SizedBox(
child: TextButton(
child: Image.asset('images/test2.jpg'),
),
),
]
[
В строке if (randomNumber == 1)[
это показывает ошибку, подобную этой.
The element type 'List<SizedBox>' can't be assigned to the list type 'Widget'.dart(list_element_type_not_assignable)
Как использовать два размерных ящика в состоянии if ?
Ответ №1:
Правильный ответ заключается в том, что внутри списков виджетов, если вы хотите добавить больше списков элементов, вам нужно использовать оператор»…». В этом случае это будет:
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
if (randomNumber == 1) ...[
SizedBox(
child: TextButton(
child: Image.asset('images/test1.jpg'),
),
),
SizedBox(
child: TextButton(
child: Image.asset('images/test2.jpg'),
),
),
],
)
Комментарии:
1. Спасибо, я раньше думал, что dart был близок к языку с, Теперь мне снова нужно изучать dart.
2. «…»- это эквивалент «Аддалла», и именно поэтому он работает. Вы также можете связать списки внутри списков, выполнив [ элемент, элемент, элемент ] [ элемент, элемент ], и массивы или объединят все вместе
Ответ №2:
Просто измените «если() []» на «если() {}». Оператор If else должен использовать фигурные скобки ({}). Не скобка/массив []
Комментарии:
1. фигурные скобки не работают внутри массивов виджетов
Ответ №3:
Вы возвращаете список списка. В операторе if есть [], удалите его и используйте вместо него {}.