BuildOp constructor
BuildOp({
- bool? alwaysRenderBlock,
- String? debugLabel,
- DefaultStyles? defaultStyles,
- OnParsed? onParsed,
- OnRenderBlock? onRenderBlock,
- OnRenderInline? onRenderInline,
- OnRenderedBlock? onRenderedBlock,
- OnRenderedChildren? onRenderedChildren,
- OnVisitChild? onVisitChild,
- int priority = kPriorityDefault,
- @Deprecated('Use onVisitChild instead.') void onChild(
- BuildMetadata subTree
- @Deprecated('Use onParsed instead.') void onTree(
- BuildMetadata meta,
- BuildTree tree
- @Deprecated('Use onRenderInline instead.') void onTreeFlattening(
- BuildMetadata meta,
- BuildTree tree
- @Deprecated('Use onRenderBlock instead.') Iterable<
Widget> ? onWidgets(- BuildMetadata meta,
- Iterable<
WidgetPlaceholder> widgets
- @Deprecated('Use alwaysRenderBlock instead.') bool onWidgetsIsOptional = false,
Creates a build op.
Implementation
factory BuildOp({
bool? alwaysRenderBlock,
String? debugLabel,
DefaultStyles? defaultStyles,
OnParsed? onParsed,
OnRenderBlock? onRenderBlock,
OnRenderInline? onRenderInline,
OnRenderedBlock? onRenderedBlock,
OnRenderedChildren? onRenderedChildren,
OnVisitChild? onVisitChild,
int priority = kPriorityDefault,
// legacy v1 parameters
@Deprecated('Use onVisitChild instead.')
void Function(BuildMetadata subTree)? onChild,
@Deprecated('Use onParsed instead.')
void Function(BuildMetadata meta, BuildTree tree)? onTree,
@Deprecated('Use onRenderInline instead.')
void Function(BuildMetadata meta, BuildTree tree)? onTreeFlattening,
@Deprecated('Use onRenderBlock instead.')
Iterable<Widget>? Function(
BuildMetadata meta,
Iterable<WidgetPlaceholder> widgets,
)? onWidgets,
@Deprecated('Use alwaysRenderBlock instead.')
bool onWidgetsIsOptional = false,
}) {
final onRenderBlockOrOnWidgets = onRenderBlock ??
(onWidgets != null
? (tree, placeholder) {
final children = onWidgets(tree, [placeholder]);
switch (children?.length) {
case null:
return placeholder;
case 0:
return widget0;
case 1:
return children?.first ?? widget0;
default:
throw UnsupportedError(
'onWidgets must return exactly 1 widget, got ${children?.length}',
);
}
}
: null);
return BuildOp.v2(
alwaysRenderBlock: alwaysRenderBlock ??
(onWidgetsIsOptional ? null : (onRenderBlockOrOnWidgets != null)),
debugLabel: debugLabel,
defaultStyles: defaultStyles,
onParsed: onParsed ??
(onTree != null
? (tree) {
onTree(tree, tree);
return tree;
}
: null),
onRenderBlock: onRenderBlockOrOnWidgets,
onRenderInline: onRenderInline ??
(onTreeFlattening != null
? (tree) => onTreeFlattening(tree, tree)
: null),
onRenderedBlock: onRenderedBlock,
onRenderedChildren: onRenderedChildren,
onVisitChild: onVisitChild ??
(onChild != null ? (_, subTree) => onChild(subTree) : null),
priority: priority,
);
}