Tentando mover minha barra de navegação para a parte inferior da tela no MAUI, o que não é tão simples quanto eu esperava.
Estou seguindo a solução deste post: aqui
No entanto, estou conseguindo The type or namespace name 'Platforms' does not exist in the namespace 'Project' (are you missing an assembly reference?)
.
Este erro está relacionado a esta linha handlers.AddHandler<Shell, ShellHandler>();
Encontrei algumas postagens com o mesmo problema, mas nenhuma parece ter uma solução anexada.
Alguma sugestão?
aplicativo.xaml.cs
using Project._ViewModels.SharedViewModel;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Controls.Hosting;
using CommunityToolkit.Maui;
using Project.Helpers;
using Project.Platforms; ///this is where the error is
namespace Project
{
/// <summary>
/// Represents the main application class.
/// </summary>
public partial class App : Application
{
/// <summary>
/// Initializes a new instance of the <see cref="App"/> class.
/// </summary>
public App()
{
InitializeComponent();
MainPage = new AppShell();
}
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit()
.ConfigureMauiHandlers(handlers =>
{
handlers.AddHandler<Shell, ShellHandler>(); });
return builder.Build();
}
}
}
ShellHandler.cs (caminho: Projeto\Plataformas\Android\ShellHandler.cs)
using Android.Content;
using AndroidX.CoordinatorLayout.Widget;
using Google.Android.Material.BottomNavigation;
using Microsoft.Maui.Controls.Handlers.Compatibility;
using Microsoft.Maui.Controls.Platform.Compatibility;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using Svg;
using System;
namespace Project.Platforms.Android
{
public partial class ShellHandler : ShellRenderer
{
public ShellHandler(Context context) : base(context) { }
protected override IShellBottomNavViewAppearanceTracker CreateBottomNavViewAppearanceTracker(Microsoft.Maui.Controls.ShellItem shellItem)
{
return new ShellBottomNavViewAppearanceTracker(this, shellItem.CurrentItem);
}
public class ShellBottomNavViewAppearanceTrackerEx : ShellBottomNavViewAppearanceTracker
{
public ShellBottomNavViewAppearanceTrackerEx(IShellContext shellContext, Microsoft.Maui.Controls.ShellItem shellItem)
: base(shellContext, shellItem) { }
public override void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
{
base.SetAppearance(bottomView, appearance);
}
}
}
}
Os arquivos na pasta Android só são compilados e incluídos no aplicativo quando o projeto é criado para um dispositivo Android. Da mesma forma, os arquivos nas pastas iOS ou Windows são incluídos apenas quando direcionados a essas plataformas.
Como
ShellHandler
está dentro da pasta Android, o namespace definido neste arquivo só fica acessível quando o aplicativo está sendo compilado para a plataforma Android.No código acima, você está tentando acessar arquivos específicos da plataforma em seu código compartilhado
App.xaml.cs
. Você não pode fazer isso diretamente, outras plataformas não conseguirão acessar esse arquivo diretamente.Você precisa usar Compilação Condicional Saiba mais...