Flutter: ListView не прокручивается в позиционированном виджете - PullRequest
1 голос
/ 27 января 2020

В настоящее время у меня есть стек с фоном для моего AppBar и содержимым моей страницы. Я отображаю Container в центре страницы, расположенной с виджетом Positioned, который содержит grid/listview.

@override
  Widget build(BuildContext context) {
    return Scaffold(
      extendBodyBehindAppBar: true,
      appBar: VehicleScreenAppBar(
        title: title,
        context: context,
      ),
      body: LayoutBuilder(
        builder: (contxt, vehicleListConstraints) {
          return Stack(
            overflow: Overflow.visible,
            children: <Widget>[
              AppBarBackDrop(constraints: vehicleListConstraints),
              Positioned(
                top: vehicleListConstraints.maxHeight * .15,
                left: (vehicleListConstraints.maxWidth - vehicleListConstraints.maxWidth * .9) / 2,
                child: Container(
                  color: Colors.red,
                  height: vehicleListConstraints.maxHeight * .6,
                  width: vehicleListConstraints.maxWidth * .9,
                  child: ListView.builder(
                    itemCount: 20,
                    itemBuilder: (context, i) {
                      return Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Container(
                          height: 50,
                          color: Colors.blue,
                          child: Text('text'),
                        ),
                      );
                    },
                  ),
                ),
              )
            ],
          );
        },
      ),
    );
  }

Screenshot

Проблема, с которой я сталкиваюсь, заключается в том, что grid/listview не прокручивается, когда у меня есть Positioned виджет, И я явно назвал любой, НО НЕ ВСЕ его конструкторы, то есть top:, bottom:, left:, right:. (Я лениво строю grid/listview лениво через .builder).

У меня есть обходной путь / хак, где я удаляю Positioned и заменяю его на PageView. Тогда PageView имеет children: <Widget> [ Container() ], который я затем позиционирую через конструкторы полей 'top: и left:.

Пока это будет работать, но не то, что я хочу реализовать для производства. Как я могу заставить grid/listview прокручивать виджет Positioned БЕЗ именования всех его конструкторов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...