from static method
Implementation
static XNativeWidgetParams? from(
XNativeWidget widget, SSRBuildContext context) {
final builder = context.widgetRepository.nativeWidgets[widget.name];
if (kDebugMode) {
if (builder == null) {
appAnalytics().logInMemoryEvent(InMemoryEvent(
'native_widget_not_found',
{'name': widget.name},
));
return XNativeWidgetParams(
QuickNativeWidget(Container(
color: Colors.red,
child: Text(
'Native widget ${widget.name} not found',
style: const TextStyle(
color: Colors.white,
),
))),
params: NativeWidgetParams(
name: widget.name,
params: widget.params.toProto3Json() as Map<String, dynamic>,
));
}
}
if (builder == null) {
return _emptyWidget;
}
final params = NativeWidgetParams(
name: widget.name,
params: widget.params.toProto3Json() as Map<String, dynamic>,
);
for (final trigger in widget.triggers) {
params.setHandler(trigger.name, trigger.trigger.buildHandler(context));
}
for (final builder in widget.widgets) {
params.setBuilder(builder.name, _cookWidget(builder.widget, context));
}
for (final gradient in widget.gradients) {
params.setGradient(gradient.name, gradient.gradient.toHubbleGradient());
}
for (final color in widget.colors) {
params.setColor(color.name, color.color.toHubbleColor());
}
for (final border in widget.borders) {
params.setBorder(border.name, border.border.toHubbleBorder());
}
for (final shadow in widget.boxShadows) {
params.setShadow(shadow.name, shadow.shadow.toHubbleBoxShadow());
}
for (final offset in widget.offsets) {
params.setOffset(offset.name, offset.offset.toOffset());
}
for (final borderRadii in widget.borderRadius) {
params.setBorderRadius(
borderRadii.name, borderRadii.radius.toBorderRadius());
}
for (final edgeInsets in widget.edgeInsets) {
params.setEdgeInsets(
edgeInsets.name, edgeInsets.edgeInsets.toEdgeInsets());
}
final nativeWidget = builder.call(params);
return XNativeWidgetParams(nativeWidget, params: params);
}