代码之家  ›  专栏  ›  技术社区  ›  Harsh Bhikadia

列内的ListView导致“垂直视区具有无限高度”

  •  3
  • Harsh Bhikadia  · 技术社区  · 7 年前

    我是新来的,在布局上有困难。

    我想要这样的东西: a sticky header and a scroll view below

    一个粘性的标题和下面的滚动视图。 我想使用带有两个孩子的列小部件-第一个是头,第二个是ListView。

    这是我的密码

     Widget build(BuildContext context) {
     return Material(
       elevation: 8.0,
       child: Column(
         crossAxisAlignment: CrossAxisAlignment.start,
         children: <Widget>[
           Padding(
             padding: const EdgeInsets.all(16.0),
             child: Text(
               title,
               style:
                   Theme.of(context).textTheme.subhead.copyWith(fontSize: 18.0),
               textAlign: TextAlign.left,
             ),
           ),
           Divider(height: 4.0),
           ListView.builder(itemBuilder: (context, i) {
             return ListTile(
               title: Text("Title $i"),
               subtitle: Text("Subtitle $i"),
             );
           }),
         ],
       ),
     );
    }
    

    我得到以下错误。

    I/flutter ( 5725): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
    I/flutter ( 5725): The following assertion was thrown during performResize():
    I/flutter ( 5725): Vertical viewport was given unbounded height.
    I/flutter ( 5725): Viewports expand in the scrolling direction to fill their container.In this case, a vertical
    I/flutter ( 5725): viewport was given an unlimited amount of vertical space in which to expand. This situation
    I/flutter ( 5725): typically happens when a scrollable widget is nested inside another scrollable widget.
    I/flutter ( 5725): If this widget is always nested in a scrollable widget there is no need to use a viewport because
    I/flutter ( 5725): there will always be enough vertical space for the children. In this case, consider using a Column
    I/flutter ( 5725): instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
    I/flutter ( 5725): the height of the viewport to the sum of the heights of its children.
    

    我添加了在消息中提到的ListView的shrinkWrap为true,但这也不起作用。

    这个布局的父级是一个包含各种这样的布局页的堆栈,所有这些布局页都在后台,只有一个用户选择了它们。

    我做错什么了?

    1 回复  |  直到 7 年前
        1
  •  8
  •   Shady Aziza    7 年前

    试着把你的 ListView.builder 用一个 Flexible Expanded 小装置:

    Flexible(
                child: ListView.builder(
                  itemBuilder: (context, i) {
                    return ListTile(
                      title: Text("Title $i"),
                      subtitle: Text("Subtitle $i"),
                    );
                  },
                ),
              ),