我正在将我以前在函数中拥有的内容移到无状态小部件中。我想知道是否可以返回带有Widget类型的列表,如果可以的话我该怎么做?
我尝试了一些随机操作,这些操作只会进一步破坏我的应用程序。
class returnList1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return <Widget>[
InfoCard(),
InfoCard(),
InfoCard(),
Stack(
children: <Widget>[
IconButton(
icon: Icon(Icons.more_horiz),
iconSize:
35.0, // TODO: scale icons based on mediaquery height and width
color: Colors.black,
onPressed: () {
print("More Pressed!");
},
),
Padding(
padding: EdgeInsets.fromLTRB(
MediaQuery.of(context).size.width * 0.034,
MediaQuery.of(context).size.height * 0.02839,
0.0,
0.0),
child: Material(
color: Colors.transparent,
elevation: 7.5,
borderRadius: BorderRadius.circular(200.0),
child: Container(
height: MediaQuery.of(context).size.height * 0.009675,
width: MediaQuery.of(context).size.width * 0.0559,
color: Colors.transparent,
),
),
),
],
)
];
}
}
运行代码时,我得到“在null上调用了getter'length'。在我的IDE中,我得到了“返回类型'List'不是'Widget',如方法'build所定义'。”
答案 0 :(得分:1)
您无法使用build
方法返回列表。 build
方法只能返回Widget
。
如果要返回列表,则可以创建一个函数并返回一个可以在任何“多个子容器”的子属性中使用的列表。
这是代码。
_returnList (BuildContext context) {
return [
InfoCard(),
InfoCard(),
InfoCard(),
Stack(
children: <Widget>[
IconButton(
icon: Icon(Icons.more_horiz),
iconSize:
35.0, // TODO: scale icons based on mediaquery height and width
color: Colors.black,
onPressed: () {
print("More Pressed!");
},
),
Padding(
padding: EdgeInsets.fromLTRB(
MediaQuery.of(context).size.width * 0.034,
MediaQuery.of(context).size.height * 0.02839,
0.0,
0.0),
child: Material(
color: Colors.transparent,
elevation: 7.5,
borderRadius: BorderRadius.circular(200.0),
child: Container(
height: MediaQuery.of(context).size.height * 0.009675,
width: MediaQuery.of(context).size.width * 0.0559,
color: Colors.transparent,
),
),
),
],
)
];
}