#dart #flutter
#dart #трепетание
Вопрос:
Это то, что я получаю на экране.
Я хочу, чтобы красные плоские кнопки не имели вертикального интервала сверху, снизу или между ними. Единственным видимым желтым цветом должно быть горизонтальное пространство между ними.
Вот код, который генерирует этот виджет:
Widget _buildSelectedFriendsRow() {
var widgets = List<Widget>();
selectedFriends.forEach((friend) {
widgets.add(
FlatButton(
child: Wrap(
alignment: WrapAlignment.start,
crossAxisAlignment: WrapCrossAlignment.center,
children: <Widget>[
Text("${friend.firstName} ${friend.lastName}",
),
Icon(
Icons.close
),
],
),
color: Colors.red,
padding: EdgeInsets.all(0.0),
onPressed: () {
_unselectFriend(friend);
},
)
);
});
Widget widget = Padding(
padding: EdgeInsets.only(left: 10.0),
child: Container(
margin: EdgeInsets.all(0),
padding: EdgeInsets.all(0),
decoration: BoxDecoration(
color: Colors.yellow,
border: Border.all(color: Colors.black),
),
child: Wrap(
alignment: WrapAlignment.start,
spacing: 10.0,
runSpacing: 0.0,
children: widgets,
),
),
);
return widget;
}
Спасибо.
Ответ №1:
Не используйте FlatButton
, если вам это не нужно, попробуйте использовать InkWell
и Container
.
Измените это:
FlatButton(
child: Wrap(
alignment: WrapAlignment.start,
crossAxisAlignment: WrapCrossAlignment.center,
children: <Widget>[
Text("${friend.firstName} ${friend.lastName}",
),
Icon(
Icons.close
),
],
),
color: Colors.red,
padding: EdgeInsets.all(0.0),
onPressed: () {
_unselectFriend(friend);
},
)
К этому:
Material(
color: Colors.red,
InkWell(
child: Container(
child: Wrap(
alignment: WrapAlignment.start,
crossAxisAlignment: WrapCrossAlignment.center,
children: <Widget>[
Text("${friend.firstName} ${friend.lastName}",
),
Icon(
Icons.close
),
],
),
),
onTap: () {
_unselectFriend(friend);
},
),
),
Комментарии:
1. На самом деле мне не нужны цвета. Я добавил цвета, чтобы видеть, где находятся края элементов на экране. Мне просто нужно что-то интерактивное внутри Wrap, и у этой интерактивной вещи должен быть текст и значок внутри. Я открыт для любой комбинации виджетов, которые могут это сделать.
2. затем удалите цвет из моего кода :), вы пробовали мой ответ? : D
3. Только что сделал. Это сработало. Немного изменил его и получил именно то, что я искал. Спасибо!!!!!