#flutter #dart #constants
Вопрос:
Виджет без состояния получает свои данные в качестве параметра. В данных есть идентификатор. Я хотел бы использовать идентификатор в качестве виджета 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) {
// …
}
}
Ответ №1:
Удалите const
модификатор раньше MyItemInAList
, в этом случае конструктор не может быть постоянным.
ObjectKey
понадобится объект в качестве параметра, например ObjectKey(data)
. Если вам это нужно id
, возможно , было бы лучше использовать ValueKey(data.id)
, возможно, добавив к нему какой-нибудь префикс.