flutter 展开的微件必须放置在Flex微件内

qco9c6ql  于 2022-12-30  发布在  Flutter
关注(0)|答案(6)|浏览(116)

新的Flutter,有人能告诉我什么是错的以下code

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()
        );
      }),) )

    );
  }
}

附加错误屏幕截图。

c7rzv4ha

c7rzv4ha1#

您没有Flex祖先。
扩展的小部件必须是行、列或Flex的后代,并且从扩展的小部件到其封闭行、列或Flex的路径必须仅包含StatelessWidgets或StatefulWidgets(而不是其他类型的小部件,如RenderObjectWidgets)。
我不确定在您的情况下是否需要Expanded。但是删除它或将它 Package 在Column中应该可以解决这个问题。

eoigrqb6

eoigrqb62#

崩溃

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

Container(
  child: Expanded(
    child: MyWidget(),
  ),
)

可接受

此处Expanded * 是Flex的后代:

Flex(
  direction: Axis.horizontal,
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)

Row也是一个Flex小部件:

Row(
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)

专栏也是

Column(
  children: [
    Expanded(
      child: MyWidget(),
    ),
  ],
)

另一种选择是直接删除Expanded小部件:

Container(
  child: MyWidget(),
)
zf9nrax1

zf9nrax13#

您需要尝试使用Flex小部件

lp0sw83n

lp0sw83n4#

另一个简单的示例与错误有关,但使用了Expanded和ConstrainedBox:
代码:

Column(
  children:  [
    ConstrainedBox(
      child: Expanded(
        child: ...
      )
    )
  ]

错误消息:
[...]通常,这意味着Expanded小部件有错误的祖先RenderObjectWidget。通常,Expanded小部件直接放置在Flex小部件中。有问题的Expanded小部件当前放置在ConstrainedBox小部件中。
为什么代码不能正常工作?在本例中,Expanded必须将Column作为直接父级(这是一个兼容的父类型)。
解决方案:

Column(
  children:  [
   Expanded(
      child: ConstrainedBox(
        child: ...
      )
    )
  ]
2guxujil

2guxujil5#

如果你在SingleChildScrollView小部件中有一个扩展的小部件,有时也会发生这种情况,然后它会显示黑屏。2如果你在SingleChildScrollView中有任何扩展的小部件,删除它就会解决这个问题。

    • 之前**
body: SingleChildScrollView(
     child: Column(
     children: [
      Container(),
       Expanded(
       child: Container(),
        ),
       ],
      ),
      ),
    • 之后**
body: SingleChildScrollView(
     child: Column(
     children: [
      Container(),
      Container(),
       ],
      ),
      ),
doinxwow

doinxwow6#

在我的情况下,问题已解决

Flex(
        direction: Axis.vertical,
        children: [
          Expanded(
            child: Text("Issue was solved"),
       )
     ])

相关问题