Одним из предпочтительных вариантов хранения настроек приложения .NET MAUI является использование менеджера предпочтений, который представлен интерфейсом IPreferences
и классом, который реализует интерфейс по умолчанию — Preferences
. Также менеджер предпочтений часто называют хранилищем ключей и значений, что в целом никак не меняет сути.
Интерфейс IPreferences и класс Preferences
Этот интерфейс предоставляет нам удобный API для хранения настроек в виде пар «ключ-значение» в хранилище устройства. Каждая платформа использует свой API для хранения настроек приложения или пользователя:
- в iOS используется
NSUserDefaults
- в Android —
SharedPreferences
- в Windows —
ApplicationDataContainer
У интерфейса определены следующие методы:
Метод | Описание |
Clear(String) |
Очищает все ключи и значения. |
Contains |
Проверяет наличие заданного ключа. |
Get<T>(String, T, String) |
Возвращает значение для заданного ключа или значение по умолчанию, указанное, если ключ не существует. |
Remove(String, String) |
Удаляет ключ и связанное с ним значение, если оно существует. |
Set<T>(String, T, String) |
Задает значение для указанного ключа. |
В пространстве имен Microsoft.
определен статический класс
public static class Preferences
который предоставляет нам в своем свойстве Default
реализацию интерфейса IPreferences
по умолчанию. Также, в этом классе определены различные версии методов для работы с ключами и их значениями, основные из которых мы рассмотрим далее. Что касается типов данных, которые могут храниться, то с использованием менеджера предпочтений можно хранить значения следующих типов данных:
Boolean
Double
Int32
Single
Int64
String
DateTime
Теперь рассмотрим пример использования менеджера предпочтений в приложениях .NET MAUI.
Менеджер предпочтений в .NET MAUI
Менеджер предпочтений доступен из любого места нашего приложения. Например, создадим новое приложение .NET MAUI и изменим код файла MauiProgram.cs следующим образом:
using Microsoft.Extensions.Logging; namespace MauiConfiguration; public static class MauiProgram { public static MauiApp CreateMauiApp() { //устанавливаем настройки приложения Preferences.Default.Set("Message", "Привет, .NET MAUI"); Preferences.Default.Set("Text", "Это пример работы с Preferences"); Preferences.Default.Set("Date", DateTime.Now); var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }); #if DEBUG builder.Logging.AddDebug(); #endif return builder.Build(); } }
Здесь мы, используя статический класс Preferences
установили три настройки приложения:
Preferences.Default.Set("Message", "Привет, .NET MAUI"); Preferences.Default.Set("Text", "Это пример работы с Preferences"); Preferences.Default.Set("Date", DateTime.Now);
Для установки свойств мы использовали переопределенные методы Set()
. Следует отметить, что метод Set()
переписывает значение настройки, если она уже содержится в хранилище. Теперь мы можем воспользоваться этими настройками в любом месте нашего приложения, например, перепишем код метода OnCounterClicked()
в классе MainPage
следующим образом:
private void OnCounterClicked(object sender, EventArgs e) { CurrentDate.Date = Preferences.Default.Get<DateTime>("Date", DateTime.MinValue); descriptionLabel.Text = Preferences.Default.Get("Text", "Welcome to your new app."); helloLabel.Text = Preferences.Default.Get("Message", "Hello, world!"); ; }
Код XAML страницы изменим следующим образом:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MauiConfiguration.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Label x:Name="helloLabel" Text="Hello, World!" Style="{StaticResource Headline}" SemanticProperties.HeadingLevel="Level1" /> <Label x:Name="descriptionLabel" Text="Descriptiom"/> <DatePicker x:Name="CurrentDate"/> <Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Fill" /> </VerticalStackLayout> </ScrollView> </ContentPage>
Проверим результат:
Итого
Менеджер предпочтений (или хранилище ключей и значений) — это один из предпочтительных способов хранения настроек приложения .NET MAUI. Для работы с менеджером используется статический класс Preferences
, который реализует интерфейс IPreferences
и предоставляет нам методы для чтения и записи настроек. Стоит отметить, что Preferences предназначен для хранения небольших по объему данных и использовать его для хранения, например, большого объема текста не рекомендуется.