Home > Net >  In a 'StatelessWidget', is it possible to set a 'key' from a parameter?
In a 'StatelessWidget', is it possible to set a 'key' from a parameter?

Time:10-18

A stateless widget receives its data as a parameter. In the data, there is an identifier. I would like to use the identifier as the widget key. Is it possible?

I wrote something like that but the compiler refuses:

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) {
    // …
  }
}

CodePudding user response:

Remove the const modifier before MyItemInAList, in this case the constructor can't be constant.

ObjectKey will need an object as a parameter, like ObjectKey(data). If you need the id, it might be better to use ValueKey(data.id), maybe adding some prefix to it.

  • Related