新的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()
);
}),) )
);
}
}
附加错误屏幕截图。
6条答案
按热度按时间c7rzv4ha1#
您没有
Flex
祖先。扩展的小部件必须是行、列或Flex的后代,并且从扩展的小部件到其封闭行、列或Flex的路径必须仅包含StatelessWidgets或StatefulWidgets(而不是其他类型的小部件,如RenderObjectWidgets)。
我不确定在您的情况下是否需要
Expanded
。但是删除它或将它 Package 在Column
中应该可以解决这个问题。eoigrqb62#
崩溃
这会崩溃,因为Expanded不是Flex小部件的后代:
可接受
此处Expanded * 是Flex的后代:
Row也是一个Flex小部件:
专栏也是
另一种选择是直接删除Expanded小部件:
zf9nrax13#
您需要尝试使用
Flex
小部件lp0sw83n4#
另一个简单的示例与错误有关,但使用了Expanded和ConstrainedBox:
代码:
错误消息:
[...]通常,这意味着Expanded小部件有错误的祖先RenderObjectWidget。通常,Expanded小部件直接放置在Flex小部件中。有问题的Expanded小部件当前放置在ConstrainedBox小部件中。
为什么代码不能正常工作?在本例中,Expanded必须将Column作为直接父级(这是一个兼容的父类型)。
解决方案:
2guxujil5#
如果你在SingleChildScrollView小部件中有一个扩展的小部件,有时也会发生这种情况,然后它会显示黑屏。2如果你在SingleChildScrollView中有任何扩展的小部件,删除它就会解决这个问题。
doinxwow6#
在我的情况下,问题已解决