Flutter Gallery演示:卡片可以改变卡片的高度

时间:2017-04-24 10:23:41

标签: flutter

我正在尝试修改Flutter示例中的cards_demo.dart。我的目的是将内置的两张卡的高度固定为:

static final double height=300.0(或一些强制性和固定号码),我希望两张卡的高度不同。

所以我修改了TravelDestination类以包含属性height

class TravelDestination {
  const TravelDestination({ this.assetName, this.title, this.description, this.height });

  final String assetName;
  final String title;
  final List<String> description;
  final double height;

  bool get isValid => assetName != null && title != null && description?.length == 3;
}

然后,在课程TravelDestinationItem build函数中:

class TravelDestinationItem extends StatelessWidget {
  TravelDestinationItem({ Key key, @required this.destination }) : super(key: key) {
    assert(destination != null && destination.isValid);
  }

  static final double height = 512.0;
  final TravelDestination destination;

  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    final TextStyle titleStyle = theme.textTheme.headline.copyWith(color: Colors.white);
    final TextStyle descriptionStyle = theme.textTheme.subhead;

    return new Container(
      padding: const EdgeInsets.all(8.0),
      height: destination.height,
      //height: height,
      child: new Card(
        child: new Column(... ...

我为两张卡分配了不同的height属性,但结果不起作用:它们仍然与static final double height指定的高度相同。

如果我注释掉static final double height行,编译器会提醒我:No static getter 'height' declared...

我对这种行为非常困惑。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

由于您正在使用不同高度的项目,因此您应该从调用ListView构造函数中删除此行:

itemExtent: TravelDestinationItem.height,

此外,您需要热重启应用程序(热重新加载不会使用新数据更新目标列表,因为它是一个全局变量)。