appBar method

  1. @override
PreferredSizeWidget appBar(
  1. AppModel app,
  2. BuildContext context, {
  3. required AppbarHeaderAttributes headerAttributes,
  4. required String pageName,
  5. required MemberModel? member,
  6. List<AbstractMenuItemAttributes>? items,
  7. BackgroundModel? backgroundOverride,
  8. RgbModel? menuBackgroundColorOverride,
  9. RgbModel? selectedIconColorOverride,
  10. RgbModel? iconColorOverride,
  11. VoidCallback? openDrawer,
  12. Key? key,
})
override

Implementation

@override
PreferredSizeWidget appBar(AppModel app, BuildContext context,
    {required AppbarHeaderAttributes headerAttributes,
    required String pageName,
    required MemberModel? member,
    List<AbstractMenuItemAttributes>? items,
    BackgroundModel? backgroundOverride,
    RgbModel? menuBackgroundColorOverride,
    RgbModel? selectedIconColorOverride,
    RgbModel? iconColorOverride,
    VoidCallback? openDrawer,
    Key? key}) {
  var iconColor = iconColorOverride ?? EliudColors.black;
  var selectedIconColor = selectedIconColorOverride ?? EliudColors.green;
  var menuBackgroundColor = menuBackgroundColorOverride ?? EliudColors.white;

  var appBarHelper =
      AppBarHelper(_frontEndStyle, DefaultMenuImpl(_frontEndStyle));
  var title = appBarHelper.title(app, context, headerAttributes, pageName);

  var iconThemeData = IconThemeData(color: RgbHelper.color(rgbo: iconColor));

  // add menu items
  List<Widget>? buttons;
  if (items != null) {
    buttons = items
        .map((item) => appBarHelper.button(app, context, item,
            menuBackgroundColor, selectedIconColor, iconColor))
        .toList();
  } else {
    buttons = [];
  }

  // add profilePhoto
  if (member != null) {
    buttons.add(_frontEndStyle
        .profilePhotoStyle()
        .getProfilePhotoButtonFromMember(app, context,
            member: member,
            radius: 20,
            iconColor: EliudColors.white,
            onPressed: openDrawer));
  }

  return AppBar(
      key: key,
      iconTheme: iconThemeData,
      title: title,
      actions: buttons,
      flexibleSpace: Container(
          clipBehavior: BoxDecorationHelper.determineClipBehaviour(
              app, member, backgroundOverride),
          margin: BoxDecorationHelper.determineMargin(
              app, member, backgroundOverride),
          padding: BoxDecorationHelper.determinePadding(
              app, member, backgroundOverride),
          decoration: BoxDecorationHelper.boxDecoration(
              app, member, backgroundOverride)));
}