#flutter #dart #flutter-layout #constraints
#флаттер #dart #flutter-layout #ограничения
Вопрос:
Я пытаюсь создать ползунок прокрутки в приложении flutter, используя этот код, чтобы задать для построения ограничений:
var cardAspectRatio = 12.0 / 16.0;
var widgetAspectRatio = cardAspectRatio * 1.2;
AspectRatio (
aspectRatio: widgetAspectRatio,
child: LayoutBuilder(builder: (context, constraints) {
var width = constraints.maxWidth;
var height = constraints.maxHeight;
})
Для того, чтобы задать ему ограничения по ширине и высоте, но в результате появляется ошибка, указывающая, что ограничения на поле не ограничены:
I/flutter ( 6957): RenderAspectRatio has unbounded constraints.
I/flutter ( 6957): This RenderAspectRatio was given an aspect ratio of
0.8999999999999999 but was given both unbounded
I/flutter ( 6957): constraints: BoxConstraints(unconstrained)
I/flutter ( 6957): size: MISSING
I/flutter ( 6957): aspectRatio: 0.9
Как я могу это решить?
Ответ №1:
У меня была такая же проблема, я понял, что код ошибки дает мне решение, поместите aspectRatio внутри виджета контейнера и укажите его ширину и высоту. В вашем случае приведенный ниже код будет работать
Container(
width = your width;
height = your height;
child:AspectRatio (
aspectRatio: widgetAspectRatio,
child: LayoutBuilder(builder: (context, constraints) {
var width = constraints.maxWidth;
var height = constraints.maxHeight;
}
)
)
Ответ №2:
Ответ Тома, похоже, является решением, но вы также можете использовать расширенный виджет и присвоить ему значение flex вместо width и height.
Нравится:
Expanded(
flex: 3,
child: AspectRatio (
aspectRatio: widgetAspectRatio,
child: LayoutBuilder(builder: (context, constraints) {
})
),