newPrefix method

String newPrefix()

Generates a unique prefix for zone IDs.

Use this to prevent ID collisions when the same component type is used multiple times.

Example

class MyListModel extends Model {
  final String zonePrefix = zone.newPrefix();

  @override
  String view() {
    return items.indexed.map((e) {
      final (i, item) = e;
      return zone.mark('${zonePrefix}item_$i', item.render());
    }).join('\n');
  }

  @override
  (Model, Cmd?) update(Msg msg) {
    if (msg is MouseMsg) {
      for (var i = 0; i < items.length; i++) {
        if (zone.get('${zonePrefix}item_$i')?.inBounds(msg) ?? false) {
          return (selectItem(i), null);
        }
      }
    }
    return (this, null);
  }
}

Implementation

String newPrefix() {
  return 'zone_${++_prefixCounter}__';
}