ListView внутри строки гибкого: горизонтальному видовому экрану была присвоена неограниченная ширина

#flutter #dart

#flutter #dart

Вопрос:

Это страница моего приложения. Я пытаюсь выделить место для размещения виджетов, а затем боковой панели справа.

 import 'package:flutter/material.dart';

class Looper extends StatefulWidget {
  @override
  _LooperState createState() => _LooperState();
}

class _LooperState extends State<Looper> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Row(children: [
          Flexible(
              flex: 21,
              child: FittedBox(
                fit: BoxFit.cover,
                child: ListView(
                  scrollDirection: Axis.horizontal,
                  children: [
                  ],
                ),
              )
          ),
          Flexible(
            child: Container(),
            flex: 2,
          ),
        ]));
  }
}
 

Но я получаю:

 Horizontal viewport was given unbounded width.
 

Я пробовал несколько BoxFit подобных fitHeight , fitWidth но ни один из них не работает. Изменение FittedBox на a Container дает ту же ошибку, но для height ;

Я вроде понимаю ошибку. ListView не получает границ, откуда расти. Однако, как я полагаю, каркас уже должен обеспечивать эти границы. Мне не нужно, чтобы все помещалось внутри a Container с шириной и размером экрана телефона.

Ответ №1:

В таких случаях вы можете использовать термоусадочную пленку. Попробуйте это.

 Row(children: [
          Flexible(
              flex: 1,
              child: ListView(
                shrinkWrap: true,
                scrollDirection: Axis.horizontal,
                children: [
                  Text('Shrink wrap is usefull.')
                ],
              )
          ),
          Flexible(
            child: Container(),
            flex: 1,
          ),
        ])