我正在创建一个卡片小部件,该小部件将用于创建卡片列表。我想向每个卡传递参数isLastCard
,以便增加列表中最后一张卡的保证金。
我有以下设置:
class CardsIndex extends StatelessWidget {
Widget _card(context, label, bool isLastCard) {
const double bottomMargin = isLastCard ? 40.0 : 8.0;
return new Container(
margin: const EdgeInsets.fromLTRB(12.0, 8.0, 12.0, bottomMargin),
child: new Row(
children: <Widget>[
new Expanded(
child: new Text(label),
),
],
),
);
}
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Cards"),
),
body: new Container(
child: new Stack(
children: [
new Container(
child: new ListView(
children: <Widget>[
_card(context, 'Card 1', false),
_card(context, 'Card 2', false),
_card(context, 'Card 3', true),
],
)
)
],
),
),
);
}
}
这使我在输出中出现了这个错误,对于转内的isLastCard
:
Const variables must be initialized with a constant value.
如何在isLastCard
小部件中正确定义bottomMargin
和_card
?
谢谢!
答案 0 :(得分:1)
想通了。
我必须这样定义bottomMargin
:
double bottomMargin = isLastCard ? 40.0 : 8.0;
并且因为我使用它在容器上设置边距,所以不必将边距定义为const
,如下所示:
margin: EdgeInsets.fromLTRB(12.0, 8.0, 12.0, bottomMargin)