给水平视口的PageView.builder给出了无限高度错误

问题描述 投票:0回答:1

我很新闻,我正在努力学习如何创建视图。我尝试创建一个单独的视图文件或小部件,如果它是在flutter中调用的,只需从main.dart调用它。

我有一个包含此代码的单独小部件

class PageEntryWidgetMain extends StatefulWidget {
  final PageViewEntryMain pageViewEntryMain;

  const PageEntryWidgetMain({Key key, this.pageViewEntryMain})
      : super(key: key);

  @override
  State<StatefulWidget> createState() {
    return _PageEntryWidgetMainState();
  }
}

class _PageEntryWidgetMainState extends State<PageEntryWidgetMain> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Row(
        children: <Widget>[
          Text(widget.pageViewEntryMain.title)
        ],
      ),
    );
  }
}

我试图通过使用带有以下代码的视图寻呼机来显示它

return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            PageView.builder(
              itemBuilder: (context, position) {
                PageEntryWidgetMain(
                  pageViewEntryMain: pages[position],
                );
              },
              itemCount: pages.length,
              scrollDirection: Axis.horizontal,
            )
          ],
        ),
      ),
    );

但它给了我以下错误

  • 水平视口被赋予无限高度。
  • 视口在横轴上展开以填充其容器并约束其子项以匹配其在横轴上的范围。在这种情况下,水平视口被赋予了无限量的垂直空间,可以在其中展开。

我对它实际抱怨的东西感到有点困惑。通过使用此代码替换PageView.builder,我只能显示一个视图

PageEntryWidgetMain(pageViewEntryMain: pages[0])

所以我相信单独的小部件本身没有问题。这可能是关于我如何尝试使用给我错误的ViewPager。

我一直在寻找PageView实现,但我还没有看到一个实际上有一个单独的视图来调用显示。我需要以这种方式学习它,这样我就可以将视图分开而不是只将它们全部写在一个文件中。

dart flutter flutter-layout
1个回答
2
投票

qazxsw poi不能成为qazxsw poi的直接孩子。更改列,在两者之间添加PageView,如下所示:

Column

为了解释这里发生了什么,Expanded有一个无限的水平宽度,即它将继续水平扩展,以占用孩子需要的空间。 Column( children: <Widget>[ Expanded( child: PageView.builder(), ), ] ) (以及任何其他水平滚动窗口小部件)需要水平约束才能使滚动逻辑起作用。

Column通过占用尽可能多的空间来限制PageView的水平尺寸,这应该可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.