La dark mode è una feature molto richiesta, ma essendo stata messa a disposizione solo nell'ultimo anno, il lavoro del team di Xamarin è stato quello di facilitare l'implementazione nelle applicazioni esistenti. Dalla versione 4.6.0.967 (e con supporto minimo ad iOS 13/Android 10) è possibile stabilire lo stile di un oggetto attraverso la property AppThemeBinding.
<Style TargetType="ContentPage" ApplyToDerivedTypes="True"> <Setter Property="BackgroundColor" Value="{AppThemeBinding Dark={StaticResource BackgroundColor_Dark}, Light={StaticResource BackgroundColor_Light}}"/> </Style>
E' stata inoltre aggiornata la modalità di setting del tema, passando da AppThemeColor ad UserAppTheme:
Application.Current.UserAppTheme = OSAppTheme.Dark; Application.Current.UserAppTheme = OSAppTheme.Light;
Eventualmente è possibile non selezionare nessun tema, lasciando al sistema operativo decidere quale adottare:
Application.Current.UserAppTheme = OSAppTheme.Unspecified;
Tramite il metodo RequestThemeChanged possiamo capire quando, ad esempio, l'utente ha deciso di specificarne uno alternativo:
Application.Current.RequestedThemeChanged += (s, a) => { //... };
Per poter utilizzare questa funzionalità, considerando che è ancora in preview, dobbiamo abilitare l'apposita feature flag all'avvio dell'app di Xamarin Forms:
Forms.SetFlags("AppTheme_Experimental");
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Applicare un filtro per recuperare alcune issue di GitHub
Generare la software bill of material (SBOM) in GitHub
Disabilitare automaticamente un workflow di GitHub (parte 2)
Eliminare una project wiki di Azure DevOps
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Scrivere selettori CSS più semplici ed efficienti con :is()
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Gestione dell'annidamento delle regole dei layer in CSS
Creare una libreria CSS universale: Cards
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Ottimizzare le pull con Artifact Cache di Azure Container Registry