在 'StatelessWidget' 中,是否可以通过参数设置 'key'?
In a 'StatelessWidget', is it possible to set a 'key' from a parameter?
无状态小部件接收其数据作为参数。在数据中,有一个标识符。我想使用标识符作为小部件 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) {
// …
}
}
去掉MyItemInAList
前面的const
修饰符,这样构造函数就不能是constant了。
ObjectKey
将需要一个对象作为参数,如 ObjectKey(data)
。如果你需要 id
,使用 ValueKey(data.id)
可能会更好,也许可以添加一些前缀。
无状态小部件接收其数据作为参数。在数据中,有一个标识符。我想使用标识符作为小部件 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) {
// …
}
}
去掉MyItemInAList
前面的const
修饰符,这样构造函数就不能是constant了。
ObjectKey
将需要一个对象作为参数,如 ObjectKey(data)
。如果你需要 id
,使用 ValueKey(data.id)
可能会更好,也许可以添加一些前缀。