protected virtual void UpdateToolbar()
        {
            ActionBarDrawerToggle toggle = _drawerToggle;

            if (Toolbar == null || NavigationStack.Count == 0 || CurrentPage == null || VirtualView == null)
            {
                return;
            }

            bool isNavigated = NavigationStack.Count > 1;
            Page currentPage = CurrentPage;

            _defaultNavigationIcon ??= Toolbar.NavigationIcon;

            if (isNavigated)
            {
                if (NavigationPage.GetHasBackButton(currentPage))
                {
                    Toolbar.NavigationIcon ??= _defaultNavigationIcon;
                    if (toggle != null)
                    {
                        toggle.DrawerIndicatorEnabled = false;
                        toggle.SyncState();
                    }

                    var prevPage        = (Page)NavigationStack[NavigationStack.Count - 2];
                    var backButtonTitle = NavigationPage.GetBackButtonTitle(prevPage);

                    ImageSource image = NavigationPage.GetTitleIconImageSource(currentPage);
                    if (!string.IsNullOrEmpty(backButtonTitle))
                    {
                        Toolbar.NavigationContentDescription = backButtonTitle;
                    }
                    else if (image == null ||
                             Toolbar.SetNavigationContentDescription(image) == null)
                    {
                        Toolbar.SetNavigationContentDescription(Resource.String.nav_app_bar_navigate_up_description);
                    }
                }
                else if (toggle != null && _flyoutPage != null)
                {
                    toggle.DrawerIndicatorEnabled = _flyoutPage.ShouldShowToolbarButton();
                    toggle.SyncState();
                }
                else
                {
                    Toolbar.NavigationIcon = null;
                }
            }
            else
            {
                if (toggle != null && _flyoutPage != null)
                {
                    toggle.DrawerIndicatorEnabled = _flyoutPage.ShouldShowToolbarButton();
                    toggle.SyncState();
                    Toolbar.SetNavigationContentDescription(Resource.String.nav_app_bar_open_drawer_description);
                }
            }

            Color tintColor = NavigationView.BarBackgroundColor;

            if (tintColor == null)
            {
                Toolbar.BackgroundTintMode = null;
            }
            else
            {
                Toolbar.BackgroundTintMode = PorterDuff.Mode.Src;
                Toolbar.BackgroundTintList = ColorStateList.ValueOf(tintColor.ToNative());
            }

            Brush barBackground = NavigationView.BarBackground;

            Toolbar.UpdateBackground(barBackground);

            Color textColor = NavigationView.BarTextColor;

            if (textColor != null)
            {
                Toolbar.SetTitleTextColor(textColor.ToNative().ToArgb());
            }

            Color navIconColor = NavigationPage.GetIconColor(CurrentPage);

            if (navIconColor != null && Toolbar.NavigationIcon != null)
            {
                DrawableExtensions.SetColorFilter(Toolbar.NavigationIcon, navIconColor, FilterMode.SrcAtop);
            }

            Toolbar.Title = currentPage?.Title ?? string.Empty;

            if (Toolbar.NavigationIcon != null && textColor != null)
            {
                var icon = this.Toolbar.NavigationIcon as DrawerArrowDrawable;
                if (icon != null)
                {
                    icon.Color = textColor.ToNative().ToArgb();
                }
            }

            UpdateTitleIcon();
            UpdateTitleView();
            UpdateToolbarVisibility();
        }
        void RegisterToolbar()
        {
            Context  context = NavigationLayout.Context;
            AToolbar bar     = Toolbar;
            Element  page    = NavigationView.RealParent;

            _flyoutPage = null;
            while (page != null)
            {
                if (page is FlyoutPage)
                {
                    _flyoutPage = page as FlyoutPage;
                    break;
                }
                page = page.RealParent;
            }

            if (_flyoutPage == null)
            {
                if (PageController.InternalChildren.Count > 0)
                {
                    _flyoutPage = PageController.InternalChildren[0] as FlyoutPage;
                }

                if (_flyoutPage == null)
                {
                    return;
                }
            }

            if (((IFlyoutPageController)_flyoutPage).ShouldShowSplitMode)
            {
                return;
            }

            var renderer = _flyoutPage.ToNative(NavigationView.Handler.MauiContext) as DrawerLayout;

            if (renderer == null)
            {
                return;
            }

            _drawerLayout = renderer;

            AutomationPropertiesProvider.GetDrawerAccessibilityResources(context, _flyoutPage, out int resourceIdOpen, out int resourceIdClose);

            if (_drawerToggle != null)
            {
                _drawerToggle.ToolbarNavigationClickListener = null;
                _drawerToggle.Dispose();
            }

            _drawerToggle = new ActionBarDrawerToggle(context.GetActivity(), _drawerLayout, bar,
                                                      resourceIdOpen == 0 ? global::Android.Resource.String.Ok : resourceIdOpen,
                                                      resourceIdClose == 0 ? global::Android.Resource.String.Ok : resourceIdClose)
            {
                ToolbarNavigationClickListener = new ClickListener(NavigationView)
            };

            if (_drawerListener != null)
            {
                _drawerLayout.RemoveDrawerListener(_drawerListener);
                _drawerListener.Dispose();
            }

            _drawerListener = new DrawerMultiplexedListener {
                Listeners = { _drawerToggle, (DrawerLayout.IDrawerListener)_drawerLayout }
            };
            _drawerLayout.AddDrawerListener(_drawerListener);
        }