← Todas as extensões

Extensão nativa

KlugDialog

com.klug.dialog.Dialog

NÃO É NECESSÁRIO APM. Baixe e aproveite. Não tem como ser mais simples.

Diálogos nativos para apps AIR no Android, iOS e macOS: alertas, diálogos com campos de texto que ficam acima do teclado e um diálogo de progresso que o seu código atualiza e fecha.

AndroidiOSmacOS Em produção A partir de €19 / ano · Comprar

Visão geral

O alerta embutido do AIR no Mac parece vindo de outra década. O KlugDialog mostra o original: sheets de alerta nativas do macOS ligadas à janela do seu app, com o ícone do app, a fonte do sistema e os estilos de botão conhecidos.

Além dos alertas simples, ele cobre o que os apps de desktop precisam todo dia: diálogos com campos de texto (por exemplo nome de usuário e senha, também como campos seguros), vários botões com estilos próprios e uma sheet de progresso ("Conectando…") que o seu código atualiza e fecha quando o trabalho termina.

Tudo é assíncrono: show() retorna imediatamente, e o seu callback recebe o botão escolhido. O KlugDialog roda na versão para Mac de nossos apps, nossa prova de conceito.

Novo no Android: os mesmos diálogos como diálogos nativos do Android. Os campos de texto ficam acima do teclado em todas as telas, também em paisagem nos tablets, onde os botões antes sumiam atrás dele; senhas, nomes de usuário e endereços de e-mail nunca são capitalizados automaticamente, e os campos de e-mail recebem o teclado de e-mail. A versão Android também empilha listas longas de botões, oferece um spinner simples e roda na versão Android de nossos apps.

Também no iOS: desde a versão 1.2, a mesma API mostra alertas nativos do iOS, diálogos com campos de texto e um diálogo de progresso, de modo que um único caminho de código atende Android, iOS e macOS.

Recursos

  • Autossuficiente: uma ANE, sem biblioteca principal nem ANEs de dependência para adicionar
  • Sheets de alerta nativas do macOS com até três botões
  • Estilos informativo, de aviso e crítico
  • Diálogos com qualquer número de botões e campos de texto, incluindo campos seguros
  • Sheet de progresso que pode ser atualizada e fechada pelo código
  • Os diálogos podem ser fechados pelo código
  • Callbacks com o botão escolhido e os valores digitados
  • Android: campos acima do teclado, senhas sem capitalização automática, teclados de e-mail / numérico, tema claro e escuro

Plataformas compatíveis

Android alertas · campos de texto · progresso · listas longas de botões
iOS arm64 · alertas · campos de texto · progresso
macOS arm64 · x86_64

Em outras plataformas, isSupported retorna false, para que o seu app possa recorrer aos diálogos habituais.

Primeiros passos

Adicione a extensão ao descritor do seu aplicativo:

app.xml
<extensions>
    <extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>

Exemplos de código

Cinco fluxos completos. Cada chamada retorna imediatamente; o resultado chega depois no seu callback, então o app nunca trava enquanto um diálogo está aberto. Documentação completa →

1 · Verificar o suporte e mostrar um alerta simples
Setup.as
import com.klug.dialog.Dialog;

var dialog:Dialog = Dialog.getInstance();

if ( dialog.isSupported )
{
    dialog.show( "Saved", "The recording is in your library." );   // one "OK" button
}
else
{
    showAppAlert( "Saved" );   // your app's own fallback dialog, e.g. on Windows
}
2 · Fazer uma pergunta com até três botões
Confirm.as
dialog.show( "Delete recording?", "This cannot be undone.",
    [ "Delete", "Keep" ],
    function( index:int ):void
    {
        // index = position in the buttons array;
        // -1 = closed without a button, e.g. the Android back key
        if ( index == 0 ) deleteRecording();   // your app
    },
    Dialog.STYLE_WARNING );   // alert style of the macOS sheet
3 · Diálogo de login com campos de texto
SignIn.as
var buttons:Array = [
    { label:"Cancel",  style:4, tag:0 },   // style 4 = cancel, 3 = destructive
    { label:"Sign in", style:0, tag:1 }
];
var fields:Array = [
    { placeholder:"E-mail", text:lastEmail, keyboardType:7 },   // 7 = e-mail keyboard
    { placeholder:"Password", secure:true }                 // never auto-capitalised
];

dialog.present( "Sign in", "Please enter your account.", true, buttons, fields,
    function( tag:int, values:Array, cancelled:Boolean = false ):void
    {
        if ( cancelled ) return;   // closed without a button (tag -1)
        if ( tag == 1 ) signIn( values[0], values[1] );   // values in field order
    },
    null, "dark" );   // theme on Android and iOS; macOS follows the system
4 · Diálogo de progresso enquanto o seu código trabalha
Connect.as
// your own id: the same dialog is updated and closed with it
dialog.progressShow( "connect", "Connecting", "Contacting the server…", false,
    function():void { trace( "progress dialog closed" ); } );   // fires once

dialog.progressUpdate( "connect", "Signing in…" );

// when the work is done, or has failed
dialog.progressDismiss( "connect" );
5 · Fechar um diálogo pelo código
Waiting.as
// pass your own id as the 7th parameter to close the dialog later
dialog.present( "Waiting for the camera", "Tap Cancel to stop waiting.", false,
    [ { label:"Cancel", style:4, tag:0 } ], null,
    function( tag:int, values:Array ):void { stopWaiting(); },   // your app
    "waitCamera" );

// the camera has answered: close the dialog, no callback fires
dialog.presentDismiss( "waitCamera" );

Visão geral da API

Dialog.getInstance()Retorna a instância única.
isSupportedVerdadeiro no Android, iOS e macOS; falso nos demais, por exemplo no Windows.
show(title, message, buttons, callback, style)Alerta com até três botões (padrão "OK"); callback(index), -1 se fechado sem um botão. Retorna false se não houver suporte.
present(title, message, cancelable, buttons, fields, callback, id, theme)Diálogo com qualquer número de botões e campos de texto; callback(tag, values, cancelled). Passe o seu próprio id para fechá-lo depois; tema "light" ou "dark" no Android e iOS.
presentDismiss(id)Fecha um diálogo present() pelo código; nenhum callback é disparado.
progressShow(id, title, message, cancelable, closeCallback, theme)Diálogo de progresso com spinner; o closeCallback é disparado uma vez quando ele desaparece.
progressUpdate(id, message) / progressDismiss(id)Altera o texto do diálogo de progresso / fecha-o.
STYLE_INFO, STYLE_WARNING, STYLE_CRITICALEstilos de alerta para show(), usados pela sheet de alerta do macOS.
Button {label, style, tag}style: 0 padrão, 1 positivo, 2 negativo, 3 destrutivo, 4 cancelar, 5 neutro. O Android usa todos, o iOS usa 3 e 4, o macOS mostra todos os botões iguais.
Field {placeholder, secure, text, keyboardType, autocorrect, autocap}keyboardType: 0 padrão, 3 URL, 4 número, 5 telefone, 7 e-mail, 8 decimal. autocap: 0 nenhuma (padrão), 1 frases, 2 palavras, 3 tudo. Os três últimos valem no Android e iOS.

Compre o KlugDialog

Uma licença anual para um app AIR, com todas as atualizações por 12 meses. Após o pagamento, você recebe a extensão, a biblioteca ActionScript e a documentação por e-mail, normalmente em até um dia útil. Licença e termos

Simples
€19 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Sem suporte
Comprar Simples
Padrão
€149 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Resposta por e-mail em até 7 dias
Comprar Padrão
Prioritário
€299 / ano
  • Licença para um app AIR
  • Todas as atualizações por 12 meses
  • Resposta por e-mail em até 48 horas
Comprar Prioritário
Os impostos são calculados no checkout pelo Link (Stripe). Você informa o ID do aplicativo do seu app AIR durante o checkout.

Requisitos

AIR SDK51.x (HARMAN)
AndroidAndroid 6 ou posterior
iOSiOS 13 ou posterior
macOSmacOS 11 ou posterior