forStyler<Styler extends Style<S>, S extends Spec<S>> static method

MixProtocolStylerCodec<Styler> forStyler<Styler extends Style<S>, S extends Spec<S>>({
  1. required MixProtocolBranchContext context,
  2. required List<MixProtocolFieldCodec<Styler, Object>> fields,
  3. Set<String>? ownerFieldInventory,
  4. required Styler build(
    1. JsonMap data,
    2. MixProtocolStylerMetadata<Styler, S> metadata
    ),
})

Creates a codec for a Mix Style, wiring its standard metadata and generated field inventory automatically.

ownerFieldInventory is a compatibility fallback for handwritten Stylers and output produced before field metadata was generated. Encoding fails with an inventory-skew diagnostic when neither source is available. Metadata exposed by the runtime Styler takes precedence over the fallback.

Implementation

static MixProtocolStylerCodec<Styler>
forStyler<Styler extends Style<S>, S extends Spec<S>>({
  required MixProtocolBranchContext context,
  required List<MixProtocolFieldCodec<Styler, Object>> fields,
  Set<String>? ownerFieldInventory,
  required Styler Function(
    JsonMap data,
    MixProtocolStylerMetadata<Styler, S> metadata,
  )
  build,
}) {
  final metadata = MixProtocolStylerMetadata<Styler, S>(
    context: context,
    readVariants: (value) => value.$variants,
    readModifier: (value) => value.$modifier,
    readAnimation: (value) => value.$animation,
  );

  return MixProtocolStylerCodec<Styler>._(
    fields: fields,
    metadata: metadata,
    ownerFieldInventory: ownerFieldInventory,
    ownerFieldInventoryOf: stylerFieldInventoryOf,
    actualFieldCount: (value) => value.props.length,
    build: (data) => build(data, metadata),
  );
}