O Snackbar
é um alerta cronometrado que aparece na parte inferior da tela por padrão. Ele é descartado após uma duração configurável de tempo. O Snackbar
é totalmente personalizável e pode ser ancorado em qualquer IView
.
O Snackbar
informa aos usuários sobre um processo que um aplicativo executou ou executará. Ele aparece temporariamente, na parte inferior da tela.
Para acessar a funcionalidade Snackbar
, a configuração específica da plataforma a seguir é necessária.
Nenhuma confiuração é necessária.
Nenhuma confiuração é necessária.
Ao usar Snackbar
, é essencial executar as duas etapas a seguir:
1. Habilitar o uso de snackbar com o MauiAppBuilder
Ao usar o UseMauiCommunityToolkit
, use o parâmetro options
para habilitar o uso de snackbar no Windows da seguinte maneira:
var builder = MauiApp.CreateBuilder()
.UseMauiCommunityToolkit(options =>
{
options.SetShouldEnableSnackbarOnWindows(true);
})
Isso registrará automaticamente os manipuladores necessários configurando eventos de ciclo de vida (OnLaunched
e OnClosed
).
2. Incluir registros ToastNotification no arquivo Package.appxmanifest
Para lidar com as ações de snackbar, você precisará modificar o arquivo Platform\Windows\Package.appxmanifest
da seguinte maneira:
- Em Package.appxmanifest, na marca
<Package>
de abertura, adicione os seguintes Namespaces XML:
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
- Em Package.appxmanifest, também na marca de abertura
<Package>
, atualize IgnorableNamespaces
para incluir uap
rescap
com
e: desktop
IgnorableNamespaces="uap rescap com desktop"
Exemplo: Marca <Package>
concluída
Aqui está um exemplo de uma marca <Package>
de abertura concluída que adicionou suporte para Snackbar
:
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="uap rescap com desktop">
- Em Package.appxmanifest, dentro de cada marca
<Application>
, adicione as seguintes extensões:
<Extensions>
<!-- Specify which CLSID to activate when notification is clicked -->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="6e919706-2634-4d97-a93c-2213b2acc334" />
</desktop:Extension>
<!-- Register COM CLSID -->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="YOUR-PATH-TO-EXECUTABLE" DisplayName="$targetnametoken$" Arguments="----AppNotificationActivated:"> <!-- Example path to executable: CommunityToolkit.Maui.Sample\CommunityToolkit.Maui.Sample.exe -->
<com:Class Id="6e919706-2634-4d97-a93c-2213b2acc334" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
Exemplo: Marca <Applications>
concluída
Aqui está um exemplo de uma marca <Applications>
concluída que agora tem suporte para Snackbar
:
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="$placeholder$"
Description="$placeholder$"
Square150x150Logo="$placeholder$.png"
Square44x44Logo="$placeholder$.png"
BackgroundColor="transparent">
<uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" />
<uap:SplashScreen Image="$placeholder$.png" />
</uap:VisualElements>
<Extensions>
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="6e919706-2634-4d97-a93c-2213b2acc334" />
</desktop:Extension>
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="YOUR-PATH-TO-EXECUTABLE" DisplayName="$targetnametoken$" Arguments="----AppNotificationActivated:"> <!-- Example path to executable: CommunityToolkit.Maui.Sample\CommunityToolkit.Maui.Sample.exe -->
<com:Class Id="6e919706-2634-4d97-a93c-2213b2acc334" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
Exemplo: Arquivo Package.appxmanifest
atualizado para dar suporte a Snackbar
Veja abaixo um arquivo de exemplo Package.appxmanifest
que foi atualizado para dar suporte a Snackbar
no Windows:
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="uap rescap com desktop">
<Identity Name="maui-package-name-placeholder" Publisher="CN=Microsoft" Version="0.0.0.0" />
<Properties>
<DisplayName>$placeholder$</DisplayName>
<PublisherDisplayName>Microsoft</PublisherDisplayName>
<Logo>$placeholder$.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="$placeholder$"
Description="$placeholder$"
Square150x150Logo="$placeholder$.png"
Square44x44Logo="$placeholder$.png"
BackgroundColor="transparent">
<uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" />
<uap:SplashScreen Image="$placeholder$.png" />
</uap:VisualElements>
<Extensions>
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation ToastActivatorCLSID="6e919706-2634-4d97-a93c-2213b2acc334" />
</desktop:Extension>
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="YOUR-PATH-TO-EXECUTABLE" DisplayName="$targetnametoken$" Arguments="----AppNotificationActivated:"> <!-- Example path to executable: CommunityToolkit.Maui.Sample\CommunityToolkit.Maui.Sample.exe -->
<com:Class Id="6e919706-2634-4d97-a93c-2213b2acc334" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>
Para obter mais informações sobre como lidar com a ativação: Enviar uma notificação do sistema local de aplicativos C#
Nenhuma confiuração é necessária.
Sintaxe
O Snackbar
é invocado usando C#.
C#
Para exibir Snackbar
, você precisa criá-lo usando o método estático Make
:
using CommunityToolkit.Maui.Alerts;
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
var snackbarOptions = new SnackbarOptions
{
BackgroundColor = Colors.Red,
TextColor = Colors.Green,
ActionButtonTextColor = Colors.Yellow,
CornerRadius = new CornerRadius(10),
Font = Font.SystemFontOfSize(14),
ActionButtonFont = Font.SystemFontOfSize(14),
CharacterSpacing = 0.5
};
string text = "This is a Snackbar";
string actionButtonText = "Click Here to Dismiss";
Action action = async () => await DisplayAlert("Snackbar ActionButton Tapped", "The user has tapped the Snackbar ActionButton", "OK");
TimeSpan duration = TimeSpan.FromSeconds(3);
var snackbar = Snackbar.Make(text, action, actionButtonText, duration, snackbarOptions);
await snackbar.Show(cancellationTokenSource.Token);
Ao chamar Snackbar.Make()
, seu parâmetro string text
é necessário. Todos os outros parâmetros são opcionais.
A captura de tela a seguir mostra o Snackbar resultante:
Há também um método de extensão, que ancorará o Snackbar
a qualquer VisualElement
:
await MyVisualElement.DisplaySnackbar("Snackbar is awesome. It is anchored to MyVisualElement");
Aviso
O Snackbar
no Windows não pode ser ancorado em VisualElement
e sempre são exibidos como uma notificação padrão do Windows.
O SnackBar
contém dois eventos:
public static event EventHandler Shown
public static event EventHandler Dismissed
Ele também contém a propriedade public static bool IsShown { get; }
.
Snackbar.Shown += (s, e) => { Console.WriteLine(Snackbar.IsShown); };
Snackbar.Dismissed += (s, e) => { Console.WriteLine(Snackbar.IsShown); };
Propriedades
Propriedade |
Type |
Descrição |
Text |
string |
Mensagem de texto. Obrigatório |
Ação |
Action |
Ação para invocar no clique do botão de ação. |
ActionButtonText |
string |
Texto do botão de ação. |
Âncora |
IView |
Âncora de Snackbar . O Snackbar aparece perto dessa exibição. Quando null , o Snackbar aparecerá na parte inferior da tela. |
Duration |
TimeSpan |
Duração de Snackbar . |
VisualOptions |
SnackbarOptions |
Opções visuais de Snackbar . |
SnackbarOptions
O SnackbarOptions
permite personalizar o estilo padrão de Snackbar
.
Propriedades
Propriedade |
Type |
Descrição |
Valor padrão |
CharacterSpacing |
double |
Espaçamento entre caracteres de mensagem. |
0.0d |
Fonte |
Font |
Fonte da mensagem. |
Font.SystemFontOfSize(14) |
TextColor |
Color |
Cor do texto da mensagem. |
Colors.Black |
ActionButtonFont |
Font |
Fonte do botão de ação. |
Font.SystemFontOfSize(14) |
ActionButtonTextColor |
Color |
Cor do texto do botão de ação. |
Colors.Black |
BackgroundColor |
Color |
Cor do plano de fundo. |
Colors.LightGray |
CornerRadius |
CornerRadius |
Raio de canto. |
new CornerRadius(4, 4, 4, 4) |
Métodos
Método |
Descrição |
Mostrar |
Exibir o Snackbar solicitado. Isso ignorará qualquer Snackbar exibido no momento |
Ignorar |
Ignorar o Snackbar solicitado. |
Observação
Você pode exibir apenas 1 Snackbar
simultaneamente. Se você chamar o método Show
uma segunda vez, o primeiro Snackbar
será descartado automaticamente antes de o segundo Snackbar
ser mostrado.
Exemplos
Você pode encontrar um exemplo desse recurso na prática em Aplicativo de exemplo do Kit de Ferramentas da Comunidade do .NET MAUI.
API
O código-fonte do Snackbar
pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.