2
respostas

Erro ao implementar o tema

Mesmo usando o MainLayout.razon

@inherits LayoutComponentBase

<MudThemeProvider Theme ="@currentTheme"/>
<MudDialogProvider />
<MudSnackbarProvider />

<MudLayout>
    <MudAppBar Color="Color.Surface" Fixed="true" Elevation="2">
        <MudImage Src="assets/img/logo_branca.png"></MudImage>
    </MudAppBar>
    <MudDrawer Open="true" ClipMode="DrawerClipMode.Always" Elevation="2">
        <NavMenu></NavMenu>
    </MudDrawer>
    <MudMainContent class="main-content">
        @Body
    </MudMainContent>
</MudLayout>
@code {
    private MudTheme currentTheme = new MudTheme()
        {
            PaletteLight = EmpresaDigitalPalletDark.CreatePallete,
            // PaletteLight = EmpresaDigitalPalletDark.CreatePallete
        };
}

implementacao do pallet:

using MudBlazor.Utilities;
using MudBlazor;

namespace EmpresaDigital.Doc.Shared
{
    public sealed class EmpresaDigitalPallet : PaletteDark
    {
        private EmpresaDigitalPallet()
        {
            Primary = new MudColor("#3C4452");
            Secondary = new MudColor("#353C48");
            Tertiary = new MudColor("#2F3642");
            Info = new MudColor("#AF52BD");
            Error = new MudColor("#E35C56");
            Warning = new MudColor("#F6B650");
            Success = new MudColor("#56A559");
        }


        public static EmpresaDigitalPallet CreatePallete => new();
    }
    public sealed class EmpresaDigitalPalletDark : PaletteLight
    {
        private EmpresaDigitalPalletDark()
        {
            //Primary = new MudColor("#FFF3FA");
            //Secondary = new MudColor("#CC7AC7");
            //Tertiary = new MudColor("#661461");
            Primary = new MudColor("#9966FF");
            Secondary = new MudColor("#F6AD31");
            Tertiary = new MudColor("#8AE491");
            Info = new MudColor("#AF52BD");
            Error = new MudColor("#E35C56");
            Warning = new MudColor("#F6B650");
            Success = new MudColor("#56A559");
        }
        public static EmpresaDigitalPalletDark CreatePallete => new();

    }
}

tive o mesmo resultado com o menu não aplicando o tema ao menu, notem que nao ha mais um parametro Palette no objeto MudTheme, porem tive o cuidado de extender PaletteLight e PaletteDark, sendo que o

private MudTheme currentTheme = new MudTheme()
        {
            PaletteLight = EmpresaDigitalPalletDark.CreatePallete,
            // PaletteLight = EmpresaDigitalPalletDark.CreatePallete
        };

esta recebendo o objeto correto (PaletteDark ou PaletteLight )

2 respostas

Oi Gislaine, tudo bem?

Vamos analisar alguns pontos que podem estar causando esse problema.

  1. Classe MudMainContent: Certifique-se de que a classe MudMainContent no seu MainLayout.razor esteja configurada corretamente. No exemplo da aula, a classe está definida como main-content pa-10. Tente ajustar o seu código para:

    <MudMainContent class="main-content pa-10">
        @Body
    </MudMainContent>
    
  2. Uso do Palette: No seu código, você está utilizando PaletteLight e PaletteDark diretamente. No exemplo da aula, o Palette é utilizado diretamente. Tente ajustar a inicialização do tema para:

    @code {
        private MudTheme currentTheme = new MudTheme()
        {
            Palette = EmpresaDigitalPalletDark.CreatePallete
        };
    }
    
  3. Verificação do CSS: Certifique-se de que o CSS personalizado está sendo aplicado corretamente. Verifique se o arquivo app.css está sendo carregado e se as classes estão corretas.

  4. Implementação do NavMenu: Verifique se o NavMenu.razor está configurado corretamente conforme o exemplo da aula:

    <MudNavMenu Class="mud-width-full mt-4">
        <MudNavLink Href="/" Icon="@Icons.Material.Filled.Home">Home</MudNavLink>
        <MudNavGroup Title="Artistas" Icon="@Icons.Material.Filled.People" Expanded="true">
            <MudNavLink Href="/Artistas">Exibir</MudNavLink>
            <MudNavLink Href="/CadastrarArtista">Cadastrar</MudNavLink>
        </MudNavGroup>
        <MudNavGroup Title="Músicas" Icon="@Icons.Material.Filled.QueueMusic" Expanded="true">
            <MudNavLink Href="/MusicasPorArtista">Músicas por artista</MudNavLink>
            <MudNavLink Href="/MusicasPorGenero">Músicas por gênero</MudNavLink>
            <MudNavLink Href="/CadastrarMusica">Cadastrar</MudNavLink>
        </MudNavGroup>
    </MudNavMenu>
    
  5. Verificação da Classe de Paleta: Certifique-se de que a classe EmpresaDigitalPalletDark está implementada corretamente e que o método CreatePallete está retornando uma instância válida da paleta.

Caso essas sugestões não resolvam o seu problema, peço que compartilhe todo o seu projeto, via GitHub ou Drive do Google. Assim poderei fazer testes.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
Entendo porque ela utilizou PaletteLight , o visual studio reclama que "MudTheme" não contém uma definição para "Palette". Ainda não achei uma solução.