Конфигурация приложения .NET MAUI. Менеджер предпочтений (IPreferences)

Одним из предпочтительных вариантов хранения настроек приложения .NET MAUI является использование менеджера предпочтений, который представлен интерфейсом IPreferences и классом, который реализует интерфейс по умолчанию — Preferences. Также менеджер предпочтений часто называют хранилищем ключей и значений, что в целом никак не меняет сути.

Интерфейс IPreferences и класс Preferences

Этот интерфейс предоставляет нам удобный API для хранения настроек в виде пар «ключ-значение» в хранилище устройства. Каждая платформа использует свой API для хранения настроек приложения или пользователя:

  • в iOS используется NSUserDefaults
  • в Android — SharedPreferences
  • в Windows — ApplicationDataContainer

У интерфейса определены следующие методы:

Метод Описание
Clear(String) Очищает все ключи и значения.
ContainsKey(String, String) Проверяет наличие заданного ключа.
Get<T>(String, T, String) Возвращает значение для заданного ключа или значение по умолчанию, указанное, если ключ не существует.
Remove(String, String) Удаляет ключ и связанное с ним значение, если оно существует.
Set<T>(String, T, String) Задает значение для указанного ключа.

В пространстве имен Microsoft.Maui.Storage определен статический класс

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 предназначен для хранения небольших по объему данных и использовать его для хранения, например, большого объема текста не рекомендуется.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии