descriptor top-level property
ContentExtensionDescriptor
descriptor
final
Implementation
final descriptor = ContentExtensionDescriptor(
contents: [
RouteDescriptor(routeTypes: [
PageRouteType.typeDescriptor,
DialogRouteType.typeDescriptor,
], layouts: [
DefaultRouteLayout.typeDescriptor,
TabsRouteLayout.typeDescriptor,
SingleItemLayout.typeDescriptor,
RouteConditionalLayout.typeDescriptor,
]),
Card.descriptor(layouts: [
DefaultCardLayout.typeDescriptor,
ListItemCardLayout.typeDescriptor,
ButtonCardLayout.typeDescriptor,
CardConditionalLayout.typeDescriptor,
]),
GroupDescriptor(layouts: [
CarouselGroupLayout.typeDescriptor,
GridGroupLayout.typeDescriptor,
ListGroupLayout.typeDescriptor,
GroupConditionalLayout.typeDescriptor,
]),
ConditionalDescriptor(),
ConditionalRouteDescriptor(),
EmptyDescriptor(),
PortableTextDescriptor(
markDefs: [
MarkDefDescriptor(
schemaType: 'invokeAction',
fromJson: InvokeActionMarkDef.fromJson,
styleBuilder: (context, def, style) {
final theme = Theme.of(context);
return style.apply(
decorationColor: theme.colorScheme.primary,
decorationStyle: TextDecorationStyle.solid,
decoration: TextDecoration.underline,
fontWeightDelta: 2,
shadows: [
Shadow(
color: theme.colorScheme.primary,
offset: const Offset(0, -2),
),
],
color: Colors.transparent,
);
},
spanBuilder: (context, def, text, style) {
return WidgetSpan(
child: GestureDetector(
onTap: () {
(def as InvokeActionMarkDef).action.execute(context);
},
child: Wrap(
crossAxisAlignment: WrapCrossAlignment.center,
direction: Axis.horizontal,
alignment: WrapAlignment.start,
children: [
Text(
text,
style: style,
softWrap: false,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left,
),
],
),
),
);
},
)
],
blocks: [
BlockItemDescriptor(
type: Unknown.typeDescriptor,
builder: (context, content) => VyuhBinding.instance.content
.buildContent(context, content as Unknown),
),
BlockItemDescriptor(
type: TypeDescriptor(
schemaType: TextBlockItem.schemaName,
fromJson: TextBlockItem.fromJson,
title: 'Text Block',
),
builder: (_, content) =>
PortableTextBlock(model: content as TextBlockItem),
),
BlockItemDescriptor(
type: Card.typeDescriptor,
builder: (context, content) => VyuhBinding.instance.content
.buildContent(context, content as Card),
),
BlockItemDescriptor(
type: Group.typeDescriptor,
builder: (context, content) => VyuhBinding.instance.content
.buildContent(context, content as Group),
),
BlockItemDescriptor(
type: Divider.typeDescriptor,
builder: (context, content) => VyuhBinding.instance.content
.buildContent(context, content as Divider),
),
],
),
DividerDescriptor(),
APIContentDescriptor(
configurations: [JsonPathApiConfiguration.typeDescriptor],
),
DocumentViewDescriptor(
layouts: [
DocumentViewConditionalLayout.typeDescriptor,
],
),
DocumentSectionViewDescriptor(
layouts: [
DocumentSectionViewConditionalLayout.typeDescriptor,
],
),
DocumentListViewDescriptor(
layouts: [
DocumentListViewConditionalLayout.typeDescriptor,
],
),
],
contentBuilders: [
Route.contentBuilder,
Card.contentBuilder,
Group.contentBuilder,
Conditional.contentBuilder,
ConditionalRoute.contentBuilder,
// This is defined explicitly because the ContentBuilder type is defined
// in vyuh_extension_content and not in vyuh_core
UnknownContentBuilder(),
Empty.contentBuilder,
PortableTextContent.contentBuilder,
Divider.contentBuilder,
Accordion.contentBuilder,
APIContent.contentBuilder,
VideoPlayerItem.contentBuilder,
DocumentView.contentBuilder,
DocumentSectionView.contentBuilder,
DocumentListView.contentBuilder,
],
contentModifiers: [
ThemeModifier.typeDescriptor,
],
conditions: [
BooleanCondition.typeDescriptor,
FeatureFlagCondition.typeDescriptor,
UserAuthenticated.typeDescriptor,
CurrentThemeMode.typeDescriptor,
ScreenSize.typeDescriptor,
CurrentPlatform.typeDescriptor,
],
actions: [
NavigationAction.typeDescriptor,
NavigateBack.typeDescriptor,
OpenUrlAction.typeDescriptor,
OpenInDialogAction.typeDescriptor,
ConditionalAction.typeDescriptor,
RouteRefreshAction.typeDescriptor,
ToggleThemeAction.typeDescriptor,
RestartApplicationAction.typeDescriptor,
ShowSnackBarAction.typeDescriptor,
HideSnackBarAction.typeDescriptor,
DrawerAction.typeDescriptor,
ShowAlertAction.typeDescriptor,
DelayAction.typeDescriptor,
],
);