buildSidebarNavigation method
build the sidebar and its children content
Implementation
Widget buildSidebarNavigation(BuildContext context, SidebarMenu menu) {
Widget sidebar = _buildSidebar(context, menu);
Widget? separator = _buildSidebarSeparator(menu);
Widget content = Expanded(
child: ListenableBuilder(
listenable: viewGroupNotifier,
builder: (context, _) {
_ensureViewGroupIndexSyncedWithPayloads();
final safe = pagePayloads.isEmpty
? 0
: safeViewGroupPayloadIndex(
viewGroupNotifier.viewIndex, pagePayloads.length);
final screenPayload = pagePayloads[safe];
final screen = ScreenController().getScreen(
key: UniqueKey(),
screenName: screenPayload.screenName,
isExternal: screenPayload.isExternal,
pageArgs: viewGroupNotifier.payload ?? screenPayload.arguments,
);
return menu.reloadView == true
? screen
: IndexedStack(
index: safe,
children: pageWidgets,
);
},
),
);
// figuring out the direction to lay things out
bool rtlLocale = Directionality.of(context) == TextDirection.rtl;
// standard layout is the sidebar menu then content
bool standardLayout = menu.atStart ? !rtlLocale : rtlLocale;
List<Widget> children = [];
if (standardLayout) {
children.add(sidebar);
if (separator != null) {
children.add(separator);
}
children.add(content);
} else {
children.add(content);
if (separator != null) {
children.add(separator);
}
children.add(sidebar);
}
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: children,
);
}