#flutter #dart #flutter-layout
#порхание #дротик #порхание-макет
Вопрос:
В настоящее время мой код выглядит следующим образом.
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
if (_isLandscape)
Row(
children: [
imageFrame,
Column(
children: [
myBuyFunctionality,
myTabBarView,
],
),
],
)
else
Column(
mainAxisSize: MainAxisSize.min,
children: [
imageFrame,
SizedBox(
height: 20,
),
myBuyFunctionality,
myTabBarView,
],
),
Align(
alignment: Alignment.bottomCenter,
child: _isBuyNow ? buyNowButton : placeBidButton,
),
],
),
),
Мой код работает абсолютно нормально, пока я не поместил myTabBarView в дерево. Он состоит из 2 дочерних виджетов, подобных этому.
var myTabBarView = TabBarView(
controller: _tabController,
children: [
placeBidBody(),
placeBidBody(),
],
);
В placeBidBody у меня есть только текстовое поле, немного текста и интервал, просто обычный материал, заключенный в столбец.
Всякий раз, когда я помещаю myTabBarView в свой SingleChildScrollView, он выдает ошибку:
Horizontal viewport was given unbounded height.
Не могли бы вы, пожалуйста, сообщить мне, что я делаю неправильно, или если есть лучший способ структурировать все это.
Я все еще относительно новичок в flutter, поэтому ваша помощь была бы очень признательна.
Ответ №1:
Wrap the parent widget(Column) with a limited height widget like SizedBox or
AspectRatio. Then use the Expanded widget like this:
child: SizedBox(
height: 300.0,
child: Column(
children: <Widget>[
.
.
.
Expanded(
child: TabBarView(
children: <Widget>[
]))]))
второе решение
SizedBox.expand(
child: TabBarView(),
)
Комментарии:
1. Я попробовал этот ответ, но теперь из-за 1 решения ошибка такова: дочерние элементы RenderFlex имеют ненулевой изгиб, но входящие ограничения по высоте не ограничены. и во втором решении ошибка такова: BoxConstraints создает бесконечную высоту.
2. Я пробовал оба. Упоминал ошибки в первом комментарии.
3. ListView ( shrinkWrap: true, дочерние элементы:[] ) замените SingleChildScrollView на это и дайте мне знать.
4. Теперь возникает эта ошибка. Дочерние элементы RenderFlex имеют ненулевой изгиб, но входящие ограничения по высоте не ограничены.
5. эта ошибка из-за того, что родительский виджет и tabwidget не имеют высоты.