【问题标题】:In a 'StatelessWidget', is it possible to set a 'key' from a parameter?在“StatelessWidget”中,是否可以从参数中设置“键”?
【发布时间】:2021-10-17 12:00:46
【问题描述】:

无状态小部件接收其数据作为参数。在数据中,有一个标识符。我想将标识符用作小部​​件key。有可能吗?

我写了类似的东西,但编译器拒绝:

class ItemData {
  final int id;
  final String label;
  const ItemData({
    required this.id,
    required this.label,
  })
}

class MyItemInAList extends StatelessWidget {
  final ItemData data;
  const MyItemInAList({required this.data})
      : super(key: ObjectKey(data.id)); // ← Error: Invalid constant value

  @override
  Widget build(BuildContext context) {
    // …
  }
}

【问题讨论】:

    标签: flutter dart constants


    【解决方案1】:

    去掉MyItemInAList之前的const修饰符,在这种情况下构造函数不能是常量。

    ObjectKey 需要一个对象作为参数,例如ObjectKey(data)。如果您需要id,最好使用ValueKey(data.id),可能会添加一些前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2012-08-30
      • 2019-05-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多