在Flutter中为窗口小部件定义自定义参数

时间:2018-06-30 00:34:44

标签: dart flutter

我正在创建一个卡片小部件,该小部件将用于创建卡片列表。我想向每个卡传递参数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),
                  ],
                )
              )
            ],
          ),
        ),
    );
  }
}

这使我在输出中出现了这个错误,对于转内的isLastCardConst variables must be initialized with a constant value.

如何在isLastCard小部件中正确定义bottomMargin_card

谢谢!

1 个答案:

答案 0 :(得分:1)

想通了。

我必须这样定义bottomMargindouble bottomMargin = isLastCard ? 40.0 : 8.0;

并且因为我使用它在容器上设置边距,所以不必将边距定义为const,如下所示: margin: EdgeInsets.fromLTRB(12.0, 8.0, 12.0, bottomMargin)