forStyler<Styler extends Style<S> , S extends Spec<S> > static method
MixProtocolStylerCodec<Styler>
forStyler<Styler extends Style<S> , S extends Spec<S> >({
- required MixProtocolBranchContext context,
- required List<
MixProtocolFieldCodec< fields,Styler, Object> > - Set<
String> ? ownerFieldInventory, - required Styler build(
- JsonMap data,
- 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),
);
}