resolveBinder static method
(FlutterWidgetBinder, FieldBindingContext)
resolveBinder(
- DogEngine engine,
- DogStructure structure,
- 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);
}