Oversigt
AIR's indbyggede advarsel på Mac ser ud, som om den stammer fra et andet årti. KlugDialog viser den ægte vare: native macOS-advarselssheets knyttet til dit appvindue, med appikonet, systemskrifttypen og de velkendte knapstile.
Ud over simple advarsler dækker den det, desktopapps har brug for hver dag: dialoger med tekstfelter (f.eks. brugernavn og adgangskode, også som sikre felter), flere knapper med deres egne stilarter og et fremdriftssheet ("Forbinder…"), som din kode opdaterer og lukker, når arbejdet er færdigt.
Alt er asynkront: show() vender straks tilbage, og dit callback modtager den valgte knap. KlugDialog kører i Mac-versionen af vores apps, vores proof of concept.
Nyt på Android: de samme dialoger som native Android-dialoger. Tekstfelter bliver over tastaturet på alle skærme, også i landskab på tablets, hvor knapperne tidligere forsvandt bag det; adgangskoder, brugernavne og e-mailadresser får aldrig automatisk stort begyndelsesbogstav, og e-mailfelter får e-mailtastaturet. Android-versionen stabler også lange knaplister og tilbyder en simpel spinner, og kører i Android-versionen af vores apps.
Også på iOS: siden version 1.2 viser den samme API native iOS-advarsler, dialoger med tekstfelter og en fremdriftsdialog, så én kodesti betjener Android, iOS og macOS.
Funktioner
- Selvstændig: én ANE, intet kernebibliotek eller afhængige ANE'er at tilføje
- Native macOS-advarselssheets med op til tre knapper
- Informations-, advarsels- og kritiske stilarter
- Dialoger med et vilkårligt antal knapper og tekstfelter, inklusive sikre felter
- Fremdriftssheet, der kan opdateres og lukkes fra kode
- Dialoger kan lukkes fra kode
- Callbacks med den valgte knap og de indtastede værdier
- Android: felter over tastaturet, ingen automatisk store begyndelsesbogstaver i adgangskoder, e-mail- / taltastaturer, lyst og mørkt tema
Understøttede platforme
På andre platforme returnerer isSupported false, så din app kan falde tilbage til sine sædvanlige dialoger dér.
Kom i gang
Tilføj udvidelsen til din applikationsdescriptor:
<extensions>
<extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>
Kodeeksempler
Fem komplette flows. Hvert kald vender straks tilbage; resultatet ankommer senere i dit callback, så appen aldrig blokerer, mens en dialog er åben. Fuld dokumentation →
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 }
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
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
// 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" );
// 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" );
API-oversigt
| Dialog.getInstance() | Returnerer den enkelte instans. |
| isSupported | Sand på Android, iOS og macOS; falsk andre steder, f.eks. på Windows. |
| show(title, message, buttons, callback, style) | Advarsel med op til tre knapper (standard "OK"); callback(index), -1 hvis lukket uden en knap. Returnerer false, hvis det ikke understøttes. |
| present(title, message, cancelable, buttons, fields, callback, id, theme) | Dialog med et vilkårligt antal knapper og tekstfelter; callback(tag, values, cancelled). Angiv dit eget id for at lukke den senere; theme "light" eller "dark" på Android og iOS. |
| presentDismiss(id) | Lukker en present()-dialog fra kode; intet callback udløses. |
| progressShow(id, title, message, cancelable, closeCallback, theme) | Fremdriftsdialog med en spinner; closeCallback udløses én gang, når den er væk. |
| progressUpdate(id, message) / progressDismiss(id) | Ændrer fremdriftsdialogens tekst / lukker den. |
| STYLE_INFO, STYLE_WARNING, STYLE_CRITICAL | Advarselsstilarter til show(), brugt af macOS-advarselssheetet. |
| Button {label, style, tag} | style: 0 default, 1 positive, 2 negative, 3 destructive, 4 cancel, 5 neutral. Android bruger dem alle, iOS bruger 3 og 4, macOS viser alle knapper ens. |
| Field {placeholder, secure, text, keyboardType, autocorrect, autocap} | keyboardType: 0 default, 3 URL, 4 number, 5 phone, 7 e-mail, 8 decimal. autocap: 0 none (default), 1 sentences, 2 words, 3 all. De sidste tre gælder på Android og iOS. |
Køb KlugDialog
En årlig licens til én AIR-applikation, med alle opdateringer i 12 måneder. Efter betaling modtager du udvidelsen, ActionScript-biblioteket og dokumentationen pr. e-mail, normalt inden for én hverdag. Licens og vilkår
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 7 dage
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 48 timer
Krav
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6 eller nyere |
| iOS | iOS 13 eller nyere |
| macOS | macOS 11 eller nyere |