Чтобы создать страницу профиля в моем приложении, у меня есть этот образец кода:
return Container(
height: 30.h,
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
const ProfilPic(),
SizedBox(
width: 5.w,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
data['pseudo'],
style: Theme.of(context).textTheme.titleMedium,
),
Text(
'Membre depuis : $userCreationDateFormatted',
style: Theme.of(context).textTheme.headlineLarge,
),
data['role'] == 'admin'
? const Text(
'Administrateur',
)
: Container(),
SizedBox(
height: 2.h,
),
Wrap(children: [
Chip(
label: Text(
'#${data['fav_genre']}',
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyLarge,
),
),
Chip(
label: Text(
'#${data['pref']}',
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyLarge,
),
),
Chip(
label: Text(
'#${data['top_']}',
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyLarge,
),
),
Chip(
label: Text(
data['top_anime'],
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.bodyLarge,
),
),
]),
],
)
]));
Проблема в том, что у меня есть переполнение, даже с виджетом «Обтекание».
Я думаю, что с основным контейнером что-то не так, потому что, когда я пробую свой код в другой части своего приложения, он работает нормально. Но я не могу понять, почему. Я даже пытаюсь обернуть «Wrap» «SingleChildScrollView», но это не работает.





Проблема в том, что у вас есть виджет Row, а внутри Column содержится (среди других виджетов) виджет Wrap. Таким образом, строка не знает, сколько места выделить вашему виджету Column.
Как только вы решите это, Wrap сделает свою работу, чтобы фишки попали в несколько линий.
Вам нужно превратить Column в виджет Expanded. Это сообщает фреймворку, что после того, как изображение профиля и разделитель SizedBox добавлены к Row, оставшееся доступное место должно быть занято вашим Column:
children: [
const ProfilPic(),
SizedBox(width: 5.w),
Expanded(child: Column(...)),
],
(Примечание: есть еще одна проблема с вашим текущим макетом: вы задаете Container фиксированную высоту. Таким образом, если содержимое не подходит, у вас будет еще одна проблема с нижним переполнением.)
Приятно Спасибо! Это работает нормально. Спасибо также за ваш совет о Container ! Я посмотрю, пока это было просто для некоторых тестов макета.