RenderAspectRatio имеет неограниченные ограничения

#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) {
       })
   ),