resolveBinder static method

(FlutterWidgetBinder, FieldBindingContext) resolveBinder(
  1. DogEngine engine,
  2. DogStructure structure,
  3. DogStructureField field
)

Implementation

static (FlutterWidgetBinder, FieldBindingContext context) resolveBinder(
  DogEngine engine,
  DogStructure structure,
  DogStructureField field,
) {
  var binder = field.firstAnnotationOf<FlutterWidgetBinder>();
  final converter = field.findConverter(structure, engine: engine, nativeConverters: true)!;
  binder ??= engine.modeRegistry.entry<FlutterWidgetBinder>().forConverterNullable(
    converter,
    engine,
  );
  binder ??= FallbackFlutterBinder.shared;
  FieldBindingContext creator<CAPTURE>() => FieldBindingContext<CAPTURE>(
    engine: engine,
    converter: converter,
    field: field,
    serializerMode: engine.modeRegistry.nativeSerialization.forConverter(converter, engine),
    fieldValidator: field.getFieldValidator(
      guardValidator: field.optional ? null : DatabindRequiredGuard(),
    ),
  );

  final context = field.type.qualifiedOrBase.consumeType(creator);
  return (binder, context);
}