getAppBar method
PreferredSizeWidget?
getAppBar(
- BuildContext context,
- CanvasNode node,
- WidgetBuildSettings settings
Implementation
PreferredSizeWidget? getAppBar(
BuildContext context,
CanvasNode node,
WidgetBuildSettings settings,
) {
if (node.properties.topAppBarPlaceholderId == null) return null;
SinglePlaceholderNode appBarPlaceholderNode = getNode(
node.properties.topAppBarPlaceholderId!,
) as SinglePlaceholderNode;
final childId = appBarPlaceholderNode.childrenOrEmpty.firstOrNull;
if (childId == null) return null;
final BaseNode appBarNode = getNode(childId);
final NodeWidgetTransformer<BaseNode> transformer = manager
.getTransformerByNode(appBarNode);
if (transformer is PassiveAppBarTransformer) {
final Widget appBarChild = manager.buildWidgetFromNode(
appBarNode as AppBarNode,
context,
settings: settings.copyWith(
// Passes through to build a PreferredSizeWidget directly.
buildRawWidget: true,
brightness: node.properties.brightness,
),
);
assert(
appBarChild is PreferredSizeWidget,
'PassiveAppBarTransformer must return a PreferredSizeWidget',
);
return appBarChild as PreferredSizeWidget;
} else {
final Widget appBarChild = manager.buildWidgetFromNode(
appBarNode,
context,
settings: settings.copyWith(brightness: node.properties.brightness),
);
return PreferredSize(
preferredSize: Size.fromHeight(
appBarPlaceholderNode.outerBoxLocal.height,
),
child: SafeArea(child: appBarChild),
);
}
}