必须将展开的小部件放在Flex小部件中

pal*_*ara 25 dart flutter

新的扑动,有人会告诉我下面的代码有什么问题在此输入图像描述

  class GamePage extends StatelessWidget {
  int _row;
  int _column;

  GamePage(this._row,this._column);

  @override
  Widget build(BuildContext context) {
    return new Material(
      color: Colors.deepPurpleAccent,
      child:new Expanded(
          child:new GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) {
        return new Center(
            child: new CellWidget()
        );
      }),) )


    );
  }
}
Run Code Online (Sandbox Code Playgroud)

附加错误截图.

Sur*_*gch 37

碰撞

这会崩溃,因为 Expanded 不是 Flex 小部件的后代:

Container(
  child: Expanded(
    child: MyWidget(),
  ),
)
Run Code Online (Sandbox Code Playgroud)

可接受

这里 ExpandedFlex 的后代:

Flex(
  direction: Axis.horizontal,
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)

Row 也是一个 Flex 小部件:

Row(
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)

列也是如此:

Column(
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)
Run Code Online (Sandbox Code Playgroud)

另一种选择是去掉 Expanded 小部件:

Container(
  child: MyWidget(),
)
Run Code Online (Sandbox Code Playgroud)


azi*_*iza 27

你没有Flex祖先.

扩展窗口小部件必须是行,列或Flex的后代,并且从扩展窗口小部件到其封闭的行,列或Flex的路径必须仅包含StatelessWidgets或StatefulWidgets(不是其他类型的窗口小部件,如RenderObjectWidgets).

我不确定Expanded你的情况是否需要.但删除它或将其包装在一个Column应该解决问题.