Lookup workflows
A lookup lets the user search for or resolve a value through application-defined UI and data access. FDC supplies the invocation context and applies the returned field values; your callback decides how selection and search work.
This keeps lookup flexible enough for dialogs, searchable lists, code-entry resolution, remote APIs, and custom selectors.
Basic editor lookup
FdcTextEdit(
dataSet: orders,
fieldName: 'customer_code',
label: 'Customer',
onLookup: (context) async {
final customer = await showCustomerPicker(
context.buildContext,
initialText: context.lookupText,
);
if (customer == null) {
return null;
}
return FdcLookupResult({
'customer_code': customer.code,
'customer_name': customer.name,
'city': customer.city,
});
},
)
A lookup result can update the initiating field and related fields as one logical write set.
Lookup context
FdcLookupContext provides:
buildContextfor presenting UI;dataSetfor the active dataset;fieldNamefor the initiating field;lookupTextfor the editor text or current field text;lookupModefor search versus resolve behavior;valueOf<T>()andtryValueOf<T>()for reading current same-record values, including the active edit buffer.
Search and resolve modes
FdcLookupMode.search represents an explicit user action, such as clicking the lookup button or pressing the configured shortcut.
FdcLookupMode.resolve represents silent resolution during commit. A callback can therefore use one function for both workflows:
onLookup: (context) async {
switch (context.lookupMode) {
case FdcLookupMode.search:
return showProductSearch(context);
case FdcLookupMode.resolve:
return resolveProductCode(context.lookupText);
}
}
Cancellation
Return null when the user cancels or when a search should not change the record.
Shared lookup design
The lookup context intentionally avoids grid-specific coordinates. The same lookup workflow can be reused from a standalone editor or a grid column because both operate on dataset fields and return FdcLookupResult.