首页 文章

垂直视口被赋予无限高度

提问于
浏览
2

我是新来的人 . 只需将我的网格视图居中:

enter image description here

以下是我试过的代码:

@override
  Widget build(BuildContext context) {
    return new Material(
      color: Colors.deepPurpleAccent,
      child: new Column(
       mainAxisAlignment: MainAxisAlignment.center,
          children:<Widget>[new GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) {
            return new Center(
                child: new CellWidget()
            );
          }),)]
      )
    );
  }

例外情况如下:

I/flutter ( 9925): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 9925): The following assertion was thrown during performResize():
I/flutter ( 9925): Vertical viewport was given unbounded height.
I/flutter ( 9925): Viewports expand in the scrolling direction to fill their container.In this case, a vertical
I/flutter ( 9925): viewport was given an unlimited amount of vertical space in which to expand. This situation
I/flutter ( 9925): typically happens when a scrollable widget is nested inside another scrollable widget.
I/flutter ( 9925): If this widget is always nested in a scrollable widget there is no need to use a viewport because
I/flutter ( 9925): there will always be enough vertical space for the children. In this case, consider using a Column
I/flutter ( 9925): instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
I/flutter ( 9925): the height of the viewport to the sum of the heights of its children.
I/flutter ( 9925): 
I/flutter ( 9925): When the exception was thrown, this was the stack:
I/flutter ( 9925): #0      RenderViewport.performResize.<anonymous closure> (package:flutter/src/rendering/viewport.dart:827:15)
I/flutter ( 9925): #1      RenderViewport.performResize (package:flutter/src/rendering/viewport.dart:880:6)
I/flutter ( 9925): #2      RenderObject.layout (package:flutter/src/rendering/object.dart:1555:9)

提前致谢!

2 回答

  • 6

    将网格视图放在Flexible或Expanded小部件中

    return new Material(
        color: Colors.deepPurpleAccent,
        child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children:<Widget>[
             Flexible(
              child:  GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) {
              return new Center(
                 child: new CellWidget(),
              );
            }),))]
        )
    );
    
  • 1

    不要将 Column 用于单个子对齐 . 请改用 Align .

    new Align(
          alignment: Alignment.topCenter,
          child: new GridView(),
        )
    

相关问题